我試圖從我的數據中找到一個子字符串。在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