如何解决除去数字之间的前导和尾随字符
以下是输入值的示例:
00080a7a00
以及此输入的预期输出:
80a7
为了获得预期的输出,我尝试了以下查询:
set @ttt='00080a7a00'
select SUBSTRING(@ttt,PATINDEX('%[1-9]%',@ttt),LEN(@ttt))
我正在得到这个输出:
80a7a00
所以我正在寻找正确的查询以具有预期的输出。
解决方法
如果要 ...除去数字之间的前导和尾随字符... ,从SQL Server 2017开始,可以使用TRIM()
从中删除指定的字符字符串的开头和结尾(TRIM()
函数接受包含应作为第一个参数删除的字符的文字或变量):
DECLARE @text varchar(100)
DECLARE @chars varchar(100)
SELECT @text = '00080a7a00'
SELECT @chars = CONCAT(
LEFT(@text,PATINDEX('%[1-9]%',@text) - 1),LEFT(REVERSE(@text),REVERSE(@text)) - 1)
)
SELECT TRIM(@chars FROM @text)
结果:
80a7
,
您可以使用REVERSE
查找结尾字符:
SELECT SUBSTRING(@ttt,@ttt),2+LEN(@ttt) -PATINDEX('%[1-9]%',@ttt) - PATINDEX('%[1-9]%',REVERSE(@ttt)))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。