выберите 100000187 из 100000187 ^ Visit-NCH в sql? - PullRequest
0 голосов
/ 29 июня 2018

Как выбрать 100000187 из 100000187 ^ Visit-NCH в sql?

Ответы [ 3 ]

0 голосов
/ 29 июня 2018

Я использую функцию ниже для аналогичной функциональности.

CREATE FUNCTION [dbo].[fn_Get_Integer_Part]
(
        @strAlphaNumeric VARCHAR(256)
)
RETURNS bigint
AS
    BEGIN
        DECLARE @intAlpha INT;
        SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric);
        BEGIN
            WHILE @intAlpha > 0
                BEGIN
                    SET @strAlphaNumeric = STUFF(
                                               @strAlphaNumeric ,
                                               @intAlpha ,
                                               1 ,
                                               '');
                    SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric);
                END;
        END;
        RETURN RIGHT('000000000000' + ISNULL(@strAlphaNumeric, 0), 12)
    END;

Использование:

SELECT dbo.fn_Get_Integer_Part('100000187^Visit-NCH');

Результат:

100000187
0 голосов
/ 03 июля 2018

Учитывая ваш комментарий в OP,

Я хочу все до '^'

Следующий запрос - это то, что вы ищете:

SELECT LEFT(<column>, CHARINDEX('^',<column>)-1) AS 'Stripped Column' FROM <table>
0 голосов
/ 29 июня 2018
CREATE FUNCTION [dbo].[REMOVE_NONINTEGERS](@TEXT VARCHAR(MAX))
       RETURNS VARCHAR(MAX)

       AS
       BEGIN
       DECLARE @Reset BIT;
       DECLARE @Ret VARCHAR(8000);
       DECLARE @i INT;
       DECLARE @c CHAR(1);
       DECLARE @CharLength INT
       DECLARE @CHARSTART INT
       DECLARE @RESULT VARCHAR(MAX)
       SET @I = 1
       SET @CHARSTART = 0
       WHILE (@i <= LEN(@Text))
       BEGIN
            SET @CHARSTART = @CHARSTART + 1
            SET @RET = SUBSTRING(@TEXT,@CHARSTART,1)
       IF(@RET NOT in('0','1','2','3','4','5','6','7','8','9'))
        BEGIN
        SET @RET = ISNULL(@RET,'')
        SET @I = @I + 1
        END
        ELSE
        BEGIN 
        SET @RESULT = ISNULL(@RESULT,'') + @RET
        SET @I = @I + 1
        END
        END

        RETURN @RESULT
        END

SELECT [dbo].[REMOVE_NONINTEGERS]('100000187^Visit-NCH') 

enter image description here

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