我正在使用SQL Server 2012,但某些值存在问题。我想从字符串中提取一组特定的值(在整个列中),并且只想检索特定的值。
该值为:SS44\\230433\586
,其他值为230084android
,第三个值为orderno 239578
共同点是所有数字均以23开头,且长度为6个字符。所有其他值都必须从字符串中删除。我尝试了rtrim
和一个ltrim
,但这没有给我想要的输出。
我不确定如何不用正则表达式。
答案 0 :(得分:2)
您可以使用PATINDEX查找数字的开头,并使用SUBSTRING获取后6位数字:
declare @Value varchar(50) = 'SS44\\230433\586'
select substring(@Value, patindex('%23%', @Value), 6)
如果您想更仔细地进行搜索,可以使用PATINDEX
并检查接下来的4个符号-它们是数字吗?
patindex('%23[0-9][0-9][0-9][0-9]%', @Value)
最终,您可以存储返回的结果并检查是否存在匹配项:
declare @Value varchar(50) = 'SS44\\230433\586'
declare @StartIndex int
set @StartIndex = patindex('%23[0-9][0-9][0-9][0-9]%', @Value)
select IIF(@StartIndex > 0, substring(@Value, @StartIndex, 6), null)