3

データベーステーブルから列を取得し、JavaScriptコードの一部を生成するユーティリティスクリプトを作成しています。私が欲しいのは、「First_Name」のような値を返し、キャメルケースで「firstName」に戻すことです。SQLでこれを行う簡単な方法はありますか?T-SQLを使用しています。

4

4 に答える 4

4

これはどう:

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

于 2012-08-13T19:42:02.507 に答える
2

「キャメルケース」(キャメルケースではない)に変換するには、これが機能するはずです。

ALTER FUNCTION dbo.camelCase(
 @input VARCHAR(8000)
)
RETURNS VARCHAR(8000)
AS
BEGIN
 SET @input = LTRIM(RTRIM(@input))

 DECLARE
  @i INT = 0
 ,@len INT = LEN(@input)
 ,@upper BIT = 0
 ,@output varchar(8000) = ''
 ,@char NCHAR
 ,@ascii INT

 WHILE @i < @len BEGIN
  SELECT
   @i = @i + 1
  ,@char = SUBSTRING(@input, @i, 1)
  ,@ascii = ASCII(@char)

  IF NOT ((@ascii >= 65 AND @ascii <= 90) OR (@ascii >= 97 AND @ascii <= 122) OR (@ascii 
 >= 48 AND @ascii <= 57)) BEGIN
   SET @upper = 1
   CONTINUE
  END

  IF (@upper = 1) SET @output = @output + UPPER(@char)
  IF (@upper = 0) SET @output = @output + LOWER(@char)
  SET @upper = 0
 END

 RETURN @output
END
于 2019-01-21T18:34:17.370 に答える
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)
于 2012-08-13T19:43:15.377 に答える
0

たまたま似たような作業を終えたばかりで、SQLがまだ稼働しているので、このスレッドで選択した回答をテストすると思いましたが、探していた結果が得られなかったので、別のオプションを提供する

//dbo.udfCamel is script above set as answer
//dbo.CamelCase is script being added below 
SELECT dbo.CamelCase('microSoft sql server'), dbo.udfCamel('microSoft sql server')

//results:
//   dbo_CamelCase           dbo_udfCamel
//   microsoftSqlServer      microSoft sql server

CREATE FUNCTION [dbo].[CamelCase]
   (@Str varchar(8000))
   RETURNS varchar(8000) AS
   BEGIN
     DECLARE @Result varchar(2000)
     SET @Str = LOWER(@Str) + ' '
     SET @Result = ''
     WHILE 1=1
        BEGIN
        IF PATINDEX('% %',@Str) = 0 BREAK
        SET @Result = @Result + UPPER(Left(@Str,1))+ SubString  (@Str,2,CharIndex(' ',@Str)-1)
        SET @Str = SubString(@Str, CharIndex(' ',@Str)+1,Len(@Str))
    END
    SET @Result = Left(@Result,Len(@Result))
    SET @Result = REPLACE(@Result, ' ', '')
    SET @Result = LOWER(SUBSTRING(@Result, 1, 1)) + SUBSTRING(@Result, 2, LEN(@Result)-1)

    RETURN @Result
    END 
于 2020-11-20T17:28:26.760 に答える