I work on sql server 2012 i face issue I need to convert characters and numbers to underscore " "
and after that concatenate it based on length of number or charachters
so if one character or one number will be
so if two character or two number will be
so if three character or three number will be _
etc
so How to make select query do above on test sample below
create table portionstable
(
PortionKey nvarchar(20)
)
insert into portionstable(PortionKey)
values
('123'),
('abc'),
('a'),
('ab'),
('12')
select * from portionstable
___
___
_
__
__
what i try but not working
select concat(replace(PortionKey,PortionKey,'_' )) as portionkeyfrom portionstable
so how to do it
hi
one idea is to do multiple replaces for all numbers and alphabets ( you can put this inside a function )
select replace 1 replace 2 replace 3
or
please see if regular expressions can be used
or
you can use C# or some other language other than T-SQL to do it
Hope this helps
No need for REPLACE at all:
SELECT REPLICATE(N'_',LEN(PortionKey)) FROM PortionsTable
1 Like
Nice Idea Robert Volk
if all the characters are numbers or letters
That's the same answer I provided over at SQLServerCentral.
Brilliant minds think alike
Heh... thank you but we may not be so brilliant if the requirement is to not replace spaces (and other non-alphanumeric characters) in a multi-word string. That would require a slightly different set of hammers (DelimitedSplit8K and STRING_AGG, if the later is available).
TRANSLATE() might be an option too, and would be the best solution.
Although I've not had to use TRANSLATE in the past, I can definitely see it fitting in there quite nicely. I wonder what the performance of the function would actually be?
Heh... but first, I wish @ahmedbarbary would tell us why this needs to be done to begin with!