SELECT
SVal = CASE
WHEN PATINDEX('S%L%', TextVal) > 0 THEN REPLACE(LEFT(TextVal, CHARINDEX('L', TextVal) - 1), 'S', '')
WHEN PATINDEX('S%', TextVal) > 0 THEN REPLACE(TextVal, 'S', '')
ELSE '0'
END,
LVal = CASE
WHEN PATINDEX('S%L%', TextVal) > 0 THEN REPLACE(RIGHT(TextVal, LEN(TextVal) - CHARINDEX('L', TextVal)), 'L', '')
WHEN PATINDEX('L%', TextVal) > 0 THEN REPLACE(TextVal, 'L', '')
ELSE '0'
FROM StringList
假设S总是在L之前。另外,你可能想把结果铸成数字(现在是字符串),这取决于你对输出的需求。
是否有什么原因,为什么这些东西不首先插入单独的列中? 创建一个计算列,把它们放回一起,比写一个函数来解析和提取这些值要容易得多。
试试这个。