2012-08-13 163 views
2

我在寫一個實用程序腳本,它將從數據庫表中取出一列,並生成一段JavaScript代碼。我想要的是返回一個像「First_Name」這樣的值並將其轉換爲「firstName」。有沒有一種簡單的方法在SQL中執行此操作?我正在使用T-SQL。T-SQL函數駝峯值駝峯值

回答

3

如何:

CREATE FUNCTION [dbo].[udfCamel] 
(
    @Name VARCHAR(50) 
) 
RETURNS varchar(50) 
AS 
BEGIN 
    declare @newstring varchar(50) 

    set @newstring = stuff(replace(@Name, '_', ''), 1, 1, lower(left(@Name, 1))) 

    RETURN @newstring 
END 

然後,當你執行它:

declare @str varchar(50) 
set @str = 'First_Name' 
select dbo.udfCamel(@str) 

回報:firstName

+0

@MikaelEriksson yup,我沒有測試那個。我測試過像First_Name_Test等,我不會編輯我的東西來包含'Stuff()',因爲它是你答案的副本。 – Taryn 2012-08-14 11:30:40

+0

這是一個副本不再:)。 – 2012-08-14 11:36:49

+0

@MikaelEriksson感謝您的編輯。我沒有想到名稱中有相同的字符重複。我總是忘記'Stuff()' – Taryn 2012-08-14 11:37:40

1

您可以使用標量函數返回的駱駝。這也將處理小寫情況。這裏是一個可能適用於你的例子:

DECLARE @MyText VARCHAR(MAX) 

SET @MyText = 'Convert_This_to_Camel_Case' 
WHILE(CHARINDEX('_',@MyText) > 0) 
BEGIN 
    SET @MyText = REPLACE(@MyText,'_' +SUBSTRING(@MyText,(CHARINDEX('_',@MyText) + 1),1), UPPER(SUBSTRING(@MyText,(CHARINDEX('_',@MyText) + 1),1))) 
END 
    SELECT LOWER(SUBSTRING(@MyText,1,1))+ SUBSTRING(@MyText, 2, LEN(@MyText) -1)