替换SQL查询中的$ 1值

时间:2015-05-18 17:47:10

标签: sql sql-server-2008

我有2个表格列,其中包含以下数据:

[item_name]
Free inodes on $1

[item_key]
vfs.fs.inode[/home,pfree]

我想编写一个select语句,将/ home放在$​​ 1所在的位置,以便返回以下内容:

Free inodes on /home

我在Google上尝试过一系列不同的搜索,但我不确定如何用这个来获得有用的结果。

1 个答案:

答案 0 :(得分:1)

使用REPLACE功能在SELECT

中进行替换
SELECT REPLACE([item_name], '$1', '/home') FROM [table_name]

现在,正如您在评论中提到的那样,“/ home”实际上可能是几种不同路径中的一种。在这种情况下,解决方案变得更加棘手。我在下面所做的是编写一个查询,该查询使用'['字符的第一个位置获取密钥的子字符串,直到找到','字符。

SELECT
REPLACE(
    [item_name],
    '$1',
    SUBSTRING(
        [item_key],
        CHARINDEX(
            '[',
            [item_key]
        ) + 1,
        CHARINDEX(
            ',',
            [item_key],
            CHARINDEX(
                '[', [item_key]
            )
        ) - CHARINDEX(
                '[', [item_key]
            ) - 1
        )
    )
    FROM [table_name]