Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server中选择字符串值_Sql_Sql Server_Sql Server 2008_Sql Server 2012 - Fatal编程技术网

在SQL Server中选择字符串值

在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

我在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 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。您可以使用任何您喜欢的名称。