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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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 - Fatal编程技术网

Sql server 获取SQL中的字符串数据

Sql server 获取SQL中的字符串数据,sql-server,Sql Server,我有以下格式的行条目: 地点=[编号];这个=那个;foo=bar 上面的[number]可以是1…无穷大。所以我需要拆分[number]以在另一个select语句where子句中使用。Site=[number]始终位于字符串的开头,并且数据总是用分号分隔。为什么要以这种格式在数据库中存储数据?将其拆分为列,以便进行有意义的查询。为什么要将数据以这种格式存储在数据库中?将其拆分为列,以便进行有意义的查询。您可以通过以下方式处理字符串: SELECT SUBSTRING(col, 1, CHARI

我有以下格式的行条目:

地点=[编号];这个=那个;foo=bar


上面的[number]可以是1…无穷大。所以我需要拆分[number]以在另一个select语句where子句中使用。Site=[number]始终位于字符串的开头,并且数据总是用分号分隔。

为什么要以这种格式在数据库中存储数据?将其拆分为列,以便进行有意义的查询。

为什么要将数据以这种格式存储在数据库中?将其拆分为列,以便进行有意义的查询。

您可以通过以下方式处理字符串:

SELECT SUBSTRING(col, 1, CHARINDEX(col,';'))
declare @tx as nvarchar(100)
set @tx = 'Site=[number];this=that;foo=bar;'

print substring(
    @tx, 
    CHARINDEX('[', @tx)+1, 
    CHARINDEX(']',@tx)-CHARINDEX('[',@tx)-1)

希望这能有所帮助。

您可以通过以下方式使用字符串:

declare @tx as nvarchar(100)
set @tx = 'Site=[number];this=that;foo=bar;'

print substring(
    @tx, 
    CHARINDEX('[', @tx)+1, 
    CHARINDEX(']',@tx)-CHARINDEX('[',@tx)-1)

希望这能有所帮助。

我没有MS Sql Server可用于尝试此功能,但您是否尝试过类似的功能

挑选 领域 将(bigint,子字符串(字段,6))转换为thenum 从…起 表 哪里 条件

其中field是包含site=[number]

该理论认为,子字符串将从起始位置剥离,并转换为 将(希望)转换数字部分,并从分号开始忽略文本的其余部分


它可能有效,也可能无效。如果没有,您可能需要编写一个详细的函数。

我没有MS Sql Server可用于尝试此功能,但您是否尝试过类似的功能

挑选 领域 将(bigint,子字符串(字段,6))转换为thenum 从…起 表 哪里 条件

其中field是包含site=[number]

该理论认为,子字符串将从起始位置剥离,并转换为 将(希望)转换数字部分,并从分号开始忽略文本的其余部分


它可能有效,也可能无效。如果没有,您可能需要编写一个详细的函数。

这个字符串操作逻辑是在select子句还是where子句中进行的?如果它在WHERE子句中运行,我会考虑重构数据库模式,因为您不太可能从中获得良好的性能。这个字符串操作逻辑是在SELECT子句还是WHERE子句中运行的?如果它在WHERE子句中运行,我会考虑重构数据库模式,因为您不太可能从中获得良好的性能。+ 1:这个特殊问题应该在更高的层次上解决:数据模型。这是供应商做的方式。我告诉他们这很糟糕,但我现在必须处理它。最初的提问者认为我不需要被判死刑,但3个月后,你就这样做了。感谢您保护stackoverflow的安全,Chris McCall。+1:这个特殊的问题应该在更高的层次上解决:数据模型。供应商就是这样做的。我告诉他们这很糟糕,但我现在必须处理它。最初的提问者认为我不需要被判死刑,但3个月后,你就这样做了。谢谢你保护stackoverflow的安全Chris McCall。