在SQL Server中选择字符串值
我在SQL表中有这些字段在SQL Server中选择字符串值,sql,sql-server,sql-server-2008,sql-server-2012,Sql,Sql Server,Sql Server 2008,Sql Server 2012,我在SQL表中有这些字段 [header]nombre=LPP Expreso LD Santiago 2 Descargas-01-10-2007 codigo=ACGRZ target=0 activo=0 [header]nombre=BS.AS / ORAN 01-07-2019 codigo=ACJEX target=0 activo=1 VigenciaDesde=01/07/2019 [header]nombre=ATC Cargas MZA/TUC/SGO.TN.03/03/10
[header]nombre=LPP Expreso LD Santiago 2 Descargas-01-10-2007 codigo=ACGRZ target=0 activo=0
[header]nombre=BS.AS / ORAN 01-07-2019 codigo=ACJEX target=0 activo=1 VigenciaDesde=01/07/2019
[header]nombre=ATC Cargas MZA/TUC/SGO.TN.03/03/10 DEV codigo=ACLGO target=0 activo=1 VigenciaD
如何进行查询以获取字符串:codigo=XXXXXX?
文本codigo始终处于不同的位置SQL Server的字符串处理功能较差。这就是为什么最好在数据进入数据库时进行处理 也就是说,你可以做你想做的事。这里有一种方法:
select t.*, left(v1.str, charindex(' ', v1.str + ' ')) as codigo_str
from (values ('[header]nombre=ATC Cargas MZA/TUC/SGO.TN.03/03/10 DEV codigo=ACLGO target=0 activo=1 VigenciaD')) t(str) cross apply
(values (stuff(t.str, 1, charindex('codigo=', t.str + 'coldigo=') - 1, ''))) v1(str);
这将切掉“codigo=”前面的字符串。然后,它使用left将所有内容带到第一个空间
如果“codigo=”不在字符串中或后面没有空格,则在charindex中使用串联可以确保安全。绕过SQL内置函数、charindex和SUBSTRING。从逻辑上讲,以下伪代码应该可以工作: 获取关键字与整个字符串一起放置的索引。 从索引中,添加关键字中使用的字符数或长度。 从第2步的结果到所需的文本长度,对整个文本进行子串。如果你的文本是固定的,那么它会更容易。 见和
希望这有帮助。您的问题不清楚。你的表结构是什么?你想做什么?如果这是你表中的数据,那么你的数据库设计有很大问题。它可以像你发布的那样编写字符串,但是我如何将它应用到一个列上呢?@LopezLopez。我不知道你在评论中问了什么。在这个查询中,列名是str。您可以使用任何您喜欢的名称。