Преобразование строковых данных в базу данных SQL Server - PullRequest
0 голосов
/ 27 октября 2010

Мне нужно преобразовать некоторые данные, хранящиеся как varchar в базе данных SQL Server, которые я хочу изменить с CamelCase на с разделителями .Я знаю, как сделать это тривиально в C #, но не T-SQL.Есть идеи?

Ответы [ 3 ]

2 голосов
/ 27 октября 2010

У меня нет SQL Server под рукой, но вам нужно циклическое тестирование для:

CODE(SUBSTRING (xx, thatpositions, 1)) BETWEEN 64 and 89

Затем введите разделитель:

SUBSTRING (xx, 1, thatpositions -1) + delimiter + SUBSTRING (xx, thatpositions, 8000)
1 голос
/ 28 октября 2010
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Alter FUNCTION dbo.GetDelimitedString 
(   
    @CamelCaseString nvarchar(max) 
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
    DECLARE @Result_String nvarchar(max)
    Select @Result_String = @CamelCaseString

    DECLARE @pos INT
    DECLARE @DelimiterCount INT
    Select @Pos = 2
    Select @DelimiterCount = 0        

    WHILE @pos <= DATALENGTH(@CamelCaseString)
    BEGIN
        IF ASCII(SUBSTRING(@CamelCaseString, @pos, 1)) BETWEEN 65 AND 90

        BEGIN
            set @Result_String = STUFF(@Result_String,@Pos + @DelimiterCount,0,',')
            Set @DelimiterCount = @DelimiterCount + 1
        END
    SET @pos = @pos + 1;
    END

    RETURN @RESULT_STRING
END

И вы можете использовать эту функцию -

select dbo.GetDelimitedString('TestStringInCamelCase')
1 голос
/ 27 октября 2010

Если у вас есть код C # для этого и вы используете SQL Server 2005+, вы можете представить код .NET как функцию TSQL (или хранимую процедуру) через SQLCLR.Проверьте, что вам разрешено, а большинство - нет, ради поддержки и / или большого риска неправильного использования.Также имейте в виду, что SQL Server 2005 использует .NET 2.0, а SQL Server 2008 (включая R2) - .NET v3.5.

В этой статье рассматривается включение SQLCLR (не требуетсяперезапуск), сборка, развертывание и использование SQLCLR для поддержки регулярных выражений.

Хотя я предпочитаю использовать TSQL всегда, когда это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...