从MSSQL中精准定位字符串位置(mssql 字符串位置)
在MSSQL中,有时候我们需要精准定位字符串的位置。比如,我们想要验证电子邮件的有效性,就需要定位字符串中的’@’。例如:
1. verifications@example.com
2. email@example.org
我们可以使用MSSQL的内置函数CHARINDEX( )来精准定位字符串位置。CHARINDEX( )函数的语法如下:
CHARINDEX( character/string/expression, character/string/expression )
它的第一个参数是要查找的字符串,而第二个参数是要查找的字符串的位置,它返回字符串在表达式中出现的第一个索引位置(从0开始),如果找不到字符串,则返回0。
检查邮件有效性的示例如下:
SELECT
CASE
WHEN CHARINDEX(‘@’,email) > 0 THEN ‘有效邮件’
ELSE ‘无效邮件’
END AS 邮件有效性
FROM
emails
这段代码会查询emails表中的邮件,然后使用CHARINDEX( )来寻找@的索引位置,如果它大于0,则说明邮件有效,否则邮件无效。
结合CHARINDEX( ),我们也可以提取2个不同字符串之间的字符串:
SUBSTRING( character/string/expression, start position, length )
该函数共有3个参数,第一个参数是要提取子字符串的字符串,第二个参数是子字符串开始位置,第三个参数是子字符串的长度。
我们可以用CHARINDEX( )获取邮箱名字段的开始和结束位置,然后将这2个位置作为参数传入SUBSTRING( )函数来提取邮箱名字段:
SELECT
SUBSTRING(email,CHARINDEX(‘@’,email)-1,LEN(email)-CHARINDEX(‘@’,email)-1) as email_name
FROM
emails
这段代码会查询emails表中的邮件,然后使用CHARINDEX( )来获取@字符出现的索引位置,再减去1来计算出邮箱名字段的开始位置。LEN(email)-CHARINDEX(‘@’,email)-1计算出子字符串的长度。最后将该位置放进SUBSTRING( )函数,返回邮箱名字段。
以上就是使用MSSQL的内置函数CHARINDEX( )和SUBSTRING( )来精准定位字符串位置的方法。使用CHARINDEX( )函数可以快速检测字符串是否有效,此外,还可以使用SUBSTRING( )函数从字符串中提取子字符串。