在SQL中获取字符串数据

时间:2009-11-05 22:58:13

标签: sql-server

我有一个具有以下格式的行条目:

位置= [数];这=那;富=巴;

上面的

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

5 个答案:

答案 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 =并进行转换 将(希望)转换数字部分并忽略分号以后的其余文本。

它可能也可能不起作用。如果不是,您可能需要编写一个精心设计的功能。