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