获取信息键值字段sql

时间:2010-12-30 09:35:47

标签: sql sql-server key-value

我尝试编写一个sql查询来从“键值”字段中获取一些信息。

  • 字段示例:A<1,?,'wfinitiation'=A<1,?,'DocID'=56581,'DocVersion'=0>>

SQLfunction是否可以只选择DocID?

  • 示例中的结果为:56581

我可以使用哪种功能?

THX

1 个答案:

答案 0 :(得分:1)

如果需要查询此列中包含的各个值,则应考虑提取信息并以关系格式存储。目前您违反了第1范式。

也就是说,您可以使用substringcharindex

DECLARE @key VARCHAR(20)
SET @key='DocID';

DECLARE @Search VARCHAR(30)
SET @Search='''' + @key + '''=';

WITH your_table(col)
     AS (SELECT 'A<1,?,''wfinitiation''=A<1,?,''DocID''=56581,''DocVersion''=0>>')

SELECT Substring(col, Charindex(@Search, col) + Len(@Search),
              Charindex(',',
              REPLACE(col, '>', ','), Charindex(@Search, col)) - (
              Charindex(@Search, col) + Len(@Search) )) AS value
FROM   your_table