我有一个名为Foo的表,并且有一个名为Bar的列,它是一个nvarchar
。
Bar的值如下所示:Prefix + Number
示例:
Bar = 'abc123'
Bar = 'a1bc23'
我想选择Bar的Number部分(后半部分),它将是:
123 if Bar = 'abc123'
23 if Bar = 'a1bc23'
假设前缀不以数字结尾我怎样才能获得Bar的数字部分?
注意:
提前感谢您的时间。
答案 0 :(得分:1)
WITH T(C)
AS
(
SELECT 'a1bc23' UNION ALL
SELECT 'abc123' UNION ALL
SELECT 'FOO' UNION ALL
SELECT NULL UNION ALL
SELECT '456'
)
SELECT
CASE WHEN C LIKE '%[0-9]'
THEN CASE WHEN C LIKE '%[^0-9]%'
THEN RIGHT(C,PATINDEX('%[^0-9]%', REVERSE(C))-1)
ELSE C
END
END AS Number
FROM T
返回
Number
------
23
123
NULL
NULL
456
答案 1 :(得分:1)
我可能会建议您查看需要执行此操作的原因,并查看是否可以使数据格式化,以便更轻松地处理这种情况。将一个字段拆分为2,并在这些行中包含前缀字段和后缀字段。特别是如果这些是“智能部件号”或类似的东西,您将能够更容易地按语法分组。