PATINDEX返回字符串在指定表达式中第一次出现的起始位置;如果在所有有效的文本和字符数据类型中都找不到该表达式,则返回零。
REVERSE返回字符串值的逆序排序形式。
SUBSTRING返回字符串指定位置内容。
---剔除字符串中第一个非字母或数字之前的字符
SELECT
CASE
WHEN PATINDEX('%[0-9a-zA-Z]%', ' ___553418___1') > 0 THEN
SUBSTRING(' ___553418___1', PATINDEX('%[0-9a-zA-Z]%', ' ___553418___1'), LEN(' ___553418___1'))
ELSE
' ___553418___1' -- 如果没有找到数字或字母,返回原字符串
END AS TrimmedString
---剔除字符串中最后一个非字母或数字之后的字符
SELECT
CASE
WHEN len(' ___553418___1')-PATINDEX('%[0-9a-zA-Z]%', REVERSE(' ___553418___1')) > 0 THEN
SUBSTRING(' ___553418___1', 1, len(' ___553418___1')-PATINDEX('%[0-9a-zA-Z]%', REVERSE(' ___553418___1'))+1)
ELSE
' ___553418___' -- 如果没有找到数字或字母,返回原字符串
END AS TrimmedString