Hi,
I had a table called Person with the columnname (person_id, person_name,person_permenant_address). I need to create a model . so to reduce my effort i planned to create a query which returns an output columns as
(PersonId, PersonName,PersonPermenantAddress) (CAMEL CASE Words).
So for this i used a below query as a temporary solution and which handled upto 3 '_' underscores...
WITH CTE AS
(
Select
REPLACE(
SUBSTRING(UPPER(Column_Name),1,1) + SUBSTRING(Column_name,2,LEN(COLUMN_NAME)),
'_' + LOWER(
SUBSTRING(UPPER(
REPLACE(SUBSTRING(Column_Name,CHARINDEX('_',COLUMN_NAME),LEN(COLUMN_NAME)-CHARINDEX('_',COLUMN_NAME)),'_','')
),1,1)
)
,
SUBSTRING(UPPER(
REPLACE(SUBSTRING(Column_Name,CHARINDEX('_',COLUMN_NAME),LEN(COLUMN_NAME)-CHARINDEX('_',COLUMN_NAME)),'_','')
),1,1)
) as ColumnName
from information_schema.columns where table_name like 'Person'
)
Select
REPLACE(
InnerColumnName,
'_' + LOWER(
SUBSTRING(UPPER(
REPLACE(SUBSTRING(InnerColumnName,CHARINDEX('_',InnerColumnName),LEN(InnerColumnName)-CHARINDEX('_',InnerColumnName)),'_','')
),1,1)
)
,
SUBSTRING(UPPER(
REPLACE(SUBSTRING(InnerColumnName,CHARINDEX('_',InnerColumnName),LEN(InnerColumnName)-CHARINDEX('_',InnerColumnName)),'_','')
),1,1)
)
from
(
Select
REPLACE(
ColumnName,
'_' + LOWER(
SUBSTRING(UPPER(
REPLACE(SUBSTRING(ColumnName,CHARINDEX('_',ColumnName),LEN(ColumnName)-CHARINDEX('_',ColumnName)),'_','')
),1,1)
)
,
SUBSTRING(UPPER(
REPLACE(SUBSTRING(ColumnName,CHARINDEX('_',ColumnName),LEN(ColumnName)-CHARINDEX('_',ColumnName)),'_','')
),1,1)
)
AS InnerColumnName
FROM CTE
) AS AAA
Can we optimize this to implement the things in a more genric way, so that it can handle n number of underscores in a query