我有一个表,其中有一列很长。我只需要从列中获取名称。
这是列名:
QSTY-IOM-HFVNBJGYG | Mobile #: 9876541323 | CUSTOMER NAME: MNOP UNIPOUYTREA POIUY | INVOICE DATE:02/28/18 | EMP#: 101466 | EMPLOYEE NAME: ANGELINA CASIANO
我只需要从该列中获取客户名称。我尝试了 Charindex,它显示了一条错误消息
Invalid length parameter passed to the LEFT or SUBSTRING function.
输出:
MNOP UNIPOUYTREA POIUY
最佳答案
由于您使用的是 SQL Server 2016,因此您可以使用它内置的 STRING_SPLIT
将字符串转换为表格的方法。
然后,您所要做的就是从以 CUSTOMER NAME:
开头的表中选择值,像这样:
DECLARE @s varchar(300) = 'QSTY-IOM-HFVNBJGYG | Mobile #: 9876541323 | CUSTOMER NAME: MNOP UNIPOUYTREA POIUY | INVOICE DATE:02/28/18 | EMP#: 101466 | EMPLOYEE NAME: ANGELINA CASIANO'
SELECT [value]
FROM STRING_SPLIT(@s, '|')
WHERE LTRIM([value]) LIKE 'CUSTOMER NAME:%'
但是,您应该阅读 Is storing a delimited list in a database column really that bad?并尽可能规范化您的数据库。
关于sql - 修剪字符串的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50347411/