【发布时间】:2017-05-08 06:07:05
【问题描述】:
我有一个表,它有一个始终以. 结尾的可变长度前缀和一个始终以- 开头的可变长度后缀。 - 也可以在我正在查找的文本字符串中找到,因此使用 REVERSE() 可能是识别后缀 - 的最佳方法。
例如:Prefix1.ABC-123-Suffix1
我希望 SUBSTRING() 结果看起来像:ABC-123
我能够创建一个 SUBSTRING() 来删除前缀和一个 SUBSTRING() 来删除后缀,但是我很难同时应用这两者。返回的文本可以是可变长度的。
我试图避免声明一个变量,但我对此持开放态度。如果可能,我宁愿只使用 SUBSTRING()、REVERSE() 和 CHARINDEX()。
这是我目前所拥有的:
SELECT [Col1]
,SUBSTRING((Col1),CHARINDEX('.', (Col1)) + 1, 999) AS [StrippedPrefix]
,REVERSE(SUBSTRING(REVERSE(Col1),CHARINDEX('-', REVERSE(Col1)) + 1, 999)) AS [StrippedSuffix]
--new SUBSTRING() with both Prefix and Suffix stripped
FROM [Table1]
【问题讨论】:
-
这是什么 SQL 变体?
-
我正在使用 SSMS 2016
标签: sql sql-server tsql substring