DATALENGTH|SUBSTRING|REPLACE|CHARINDEX

……
ALTER FUNCTION [dbo].[fn_idtotable](@ text text)
RETURNS @tbl TABLE (ID int)
AS
BEGIN
     DECLARE @IDs varchar(1000)
     DECLARE @S varchar(10)
     DECLARE @B int, @E int, @L int, @N int, @K int
    
     SET @L = DATALENGTH(@ text)
     SET @B = 1
     WHILE @B <= @L
     BEGIN
         IF @L - @B > 900 SET @N = 900 ELSE SET @N = @L - @B +1
         WHILE NOT ( SUBSTRING(@ text, @B + @N - 1, 1) IN ( ',', ';', ' ', '(', ')', '' '', '"')) AND (@B + @N <= @L) SET @N = @N + 1
         SET @IDs = SUBSTRING(@ text, @B, @N)
         SET @B = @B + @N
        
         SET @IDs = REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( LTRIM( RTRIM(@IDs)), ';', ','), ' ', ','), '(', ','), ')', ','), '' '', ','), '"', ',')
         IF RIGHT(@IDs, 1) <> ',' SET @IDs = @IDs + ','
         SET @K = CHARINDEX( ',', @IDs)    
         WHILE @K > 0
         BEGIN
             SET @S = LEFT(@IDs, @K - 1)
             IF @S <> '' INSERT INTO @tbl VALUES(@S)
             SET @IDs = SUBSTRING(@IDs, @K + 1, LEN(@IDs) - @K)
             SET @K = CHARINDEX( ',', @IDs)
         END    
     END
     RETURN
END
…… 
 
1. SUBSTRING ( value_expression ,start_expression , length_expression )
返回从'start_expression'开始的'length_expression'个字符;
说明:
value_expressioncharacterbinarytextntextimage 表达式。
start_expression指定返回字符的起始位置的整数或 bigint 表达式。如果 start_expression 小于 1,返回的表达式的起始位置为 value_expression 中指定的第一个字符。在这种情况下,返回的字符数是 start_expressionlength_expression 的和与 0 之的大值。如果 start_expression 大于值表达式中的字符数,将返回一个零长度的表达式。
length_expression是正整数或指定要返回的 value_expression 的字符数的 bigint 表达式。如果 length_expression 是负数,会生成错误并终止语句。如果 start_expressionlength_expression 的和大于 value_expression 中的字符数,则返回起始位置为 start_expression 的整个值表达式。
 
2. DATALENGTH ( expression )
返回任何数据类型数据的长度
如果 expression 的数据类型为 varchar(max)nvarchar(max)varbinary(max) 数据类型,则返回 bigint;否则返回 int
NULL 的 DATALENGTH 的结果是 NULL。
 
3. REPLACE ( string_expression , string_pattern , string_replacement )
string_expression:要搜索的字符串表达式。 string_expression 可以是字符或二进制数据类型。
string_pattern:是要查找的子字符串。 string_pattern 可以是字符或二进制数据类型。 string_pattern 不能是空字符串 ('')。
string_replacement:替换字符串。 string_replacement 可以是字符或二进制数据类型。
 
4. CHARINDEX ( expression1 ,expression2 [ , start_location ] )
expression2 中搜索 expression1 并返回其起始位置(如果找到)。搜索的起始位置为 start_location。如果未指定 start_location,或者 start_location 为负数或 0,则将从 expression2 的开头开始搜索。

你可能感兴趣的:(sql,职场,休闲)