字符串函数CHARINDEX,STUFF,PATINDEX,REPLICATE

 

CHARINDEX 字符串查找

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )

        查找的字符,被搜索的字符,搜索开始  --如果start_location未指定、为负值或零 (0) 值,则搜索从expressionToSearch的开头开始

返回的起始位置是从 1 开始的,而不是从 0 开始的。返回值是start_location +包含start_location 这个的,往后面查询的索引位置             

SELECT CHARINDEX('is', 'this is a string', 4);//返回是6=4+2  
                ↑12
              123456
//也可以算是从头计算,但是到搜索位置才开始匹配查找                     

SELECT CHARINDEX ( 'TEST', 'This is a Test' COLLATE Latin1_General_CS_AS); //执行区分大小写的搜索

SELECT CHARINDEX ( 'TEST', 'This is a Test' COLLATE Latin1_General_CI_AS);//忽略大小写的搜索

STUFF  字符串插入

STUFF ( character_expression , start , length , replaceWith_expression )

    原始字符串,指定开始删除和插入的位置,要删除的字符数,替换的字符串

下面的示例返回通过从第一个字符串 中删除三个字符abcdef、从位置2、 at开始b并在删除点插入第二个字符串而创建的字符串。
SELECT STUFF('abcdef', 2, 3, 'ijklmn'); //结果aijklmnef 

CHAR() 将ASCII 转换为对应的值

SELECT CHAR(65)//=A

ASCII () 将ASCII字符转换为 数字

SELECT ASCII('A')//=65

PATINDEX  正则表达式匹配字符串

SELECT position = PATINDEX('%[^ 0-9A-Za-z]%', 'Please ensure the door is locked!'); --使用[^] 字符串运算符来查找不是数字​​、字母或空格的字符的位置

REPLICATE 将字符串值重复指定的次数

使用 REPLICATEDATALENGTH
以下示例在将数字从数字数据类型转换为字符或 Unicode 时将数字左填充到指定的长度。

IF EXISTS(SELECT name FROM sys.tables  
      WHERE name = 't1')  
   DROP TABLE t1;  
GO  
CREATE TABLE t1   
(  
 c1 varchar(3),  
 c2 char(3)  
);  
GO  
INSERT INTO t1 VALUES ('2', '2'), ('37', '37'),('597', '597');  
GO  
SELECT REPLICATE('0', 3 - DATALENGTH(c1)) + c1 AS 'Varchar Column',  
       REPLICATE('0', 3 - DATALENGTH(c2)) + c2 AS 'Char Column'  
FROM t1;  
GO  

REVERSE返回字符串值的相反顺序

参考:https://docs.microsoft.com/en-us/sql/t-sql/functions/stuff-transact-sql?view=sql-server-ver15

   https://docs.microsoft.com/en-us/sql/t-sql/functions/charindex-transact-sql?view=sql-server-ver15

原文地址:https://www.cnblogs.com/yyl001/p/15722773.html