我有一个表,其中的列Col1的值如下:
SELECT 'XXX-T09-CFO Signature' AS Col1
UNION
SELECT 'YYY-T140 - Update Funding Authorization Status to Completed'
UNION
SELECT'ZZZ-T13-PAB Chair Signature'
我的输出col2在col1的单词“ Signature”之前应有字符串。如果未找到单词Signature,则应将其设置为NULL
SELECT 'XXX-T09-CFO Signature' AS Col1,'CFO' as Col2
UNION
SELECT 'YYY-T140 - Update Funding Authorization Status to Completed' ,Null
UNION
SELECT'ZZZ-T13-PAB Chair Signature','PAB Chair'
我认为您想使用STRING_SPLIT:https://docs.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver15&viewFallbackFrom=sql-server-previousversions
我将演示一次使用它(未经测试),但是您可以使用它两次来获得想要的东西,一次在破折号上分割一次,一次在空格上分割
SELECT Word
FROM
(
SELECT 'XXX-T09-CFO Signature' AS Word,ROW_NUMBER()OVER(ORDER BY (SELECT NULL)) RN
FROM STRING_SPLIT(@Var, '-')
) T
WHERE RN == 3;