我有一个具有以下格式的行条目:
位置= [数];这=那;富=巴;
上面的[数字]可以是1 ...无穷大。所以我需要拆分[number]以在另一个select语句where子句中使用。 Site = [number]始终位于字符串的开头,数据始终用分号分隔。
答案 0 :(得分:2)
declare @t nvarchar(100) = 'Site=230;this=that;foo=bar;';
select convert(int, substring(@t,6, charindex(';',@t,0)-6))
答案 1 :(得分:1)
SELECT SUBSTRING(col, 1, CHARINDEX(col,';'))
答案 2 :(得分:1)
为什么要以这种格式在数据库中存储数据?将其拆分为列,以便您可以进行有意义的查询。
答案 3 :(得分:0)
你可以这样玩字符串:
declare @tx as nvarchar(100)
set @tx = 'Site=[number];this=that;foo=bar;'
print substring(
@tx,
CHARINDEX('[', @tx)+1,
CHARINDEX(']',@tx)-CHARINDEX('[',@tx)-1)
希望这有帮助。
答案 4 :(得分:0)
我没有可用的MS Sql Server试试这个,但是你尝试过像
这样的东西选择 领域 将(bigint,substring(field,6))转换为thenum 从 桌子 哪里 条件=东西
其中field是包含site = [number]; ...
的字段的名称理论认为,子串将在开始时剥离site =并进行转换 将(希望)转换数字部分并忽略分号以后的其余文本。
它可能也可能不起作用。如果不是,您可能需要编写一个精心设计的功能。