我试图从我的数据中找到一个子字符串。在T-SQL中修剪左边的一个字符
提交的永远是这种格式的数据的格式:
- supplierName - [PropRef]
- 例如“AJ考克斯 - [SCOOPPP0000594]”
我从字符串需要的是方括号中的数字(propRef),我知道我需要先找到CHARINDEX“ - ”,然后用替换方括号没有什么,但我不确定如何做到这一点。
任何意见,将不胜感激
我试图从我的数据中找到一个子字符串。在T-SQL中修剪左边的一个字符
提交的永远是这种格式的数据的格式:
我从字符串需要的是方括号中的数字(propRef),我知道我需要先找到CHARINDEX“ - ”,然后用替换方括号没有什么,但我不确定如何做到这一点。
任何意见,将不胜感激
如果 '[' 和 ']' 字符是分隔符,那么就使用它们:
DECLARE @SupplierName NVARCHAR(50) = 'A J Cox - [SCOOPPP0000594]'
SELECT SUBSTRING(@SupplierName, 1 + CHARINDEX('[', @SupplierName), CHARINDEX(']', @SupplierName) - CHARINDEX('[', @SupplierName) - 1)
喜欢的东西(假设MSSQL)的字符串
SELECT
SUBSTRING('A J Cox - [SCOOPPP0000594]',
CHARINDEX('[', 'A J Cox - [SCOOPPP0000594]') + 1,
LEN('A J Cox - [SCOOPPP0000594]') - (CHARINDEX('[', 'A J Cox - [SCOOPPP0000594]') + 1)
)
或者
SELECT
SUBSTRING(YourFieldName,
CHARINDEX('[', YourFieldName) + 1,
LEN(YourFieldName) - (CHARINDEX('[', YourFieldName) + 1)
少了一个CHARINDEX
,少了一个搜索!
XML可以很好的工作太:
DECLARE @SupplierName NVARCHAR(50) = 'A J Cox - [SCOOPPP0000594]'
SELECT CAST(REPLACE(replace(@SupplierName,'[','<sup>'),']','</sup>') AS XML).query('//sup/text()')
完美,非常感谢 – joeMarsden 2015-01-15 15:57:22
无需使用'CHARINDEX(']',@SupplierName)''CHARINDEX'搜索字符串,但你已经知道它在哪里(在最后)。使用LEN更有效一些。 – Fred 2015-01-15 16:11:03
Fred很正确! – SimonJ 2015-01-15 16:33:10