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 将字符串值重复指定的次数
使用 REPLICATE 和 DATALENGTH 以下示例在将数字从数字数据类型转换为字符或 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