Trim T-SQL 中的一个字符左侧

Trim left of a character in T-SQL

我正在尝试从我的数据中查找子字符串。

提交的数据格式将始终采用这种格式:

我从字符串中需要的是方括号之间的数字 (propRef),我知道我需要先找到 charindex '-' 然后用任何东西替换方括号,但我不确定具体如何这样做。

如有任何建议,我们将不胜感激

类似(假设是 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,字符串上少了一个搜索!

如果“[”和“]”字符是分隔符,则只需使用它们:

 DECLARE @SupplierName NVARCHAR(50) = 'A J Cox - [SCOOPPP0000594]'
 SELECT SUBSTRING(@SupplierName, 1 + CHARINDEX('[', @SupplierName), CHARINDEX(']', @SupplierName) - CHARINDEX('[', @SupplierName) - 1)

XML 也可以很好地工作:

DECLARE @SupplierName NVARCHAR(50) = 'A J Cox - [SCOOPPP0000594]'
SELECT CAST(REPLACE(replace( @SupplierName,'[','<sup>'),']','</sup>') AS XML).query('//sup/text()')