转义SELECT语句以在列中存储a

时间:2016-03-29 20:45:09

标签: sql sql-server tsql

我需要在列中存储select语句。

这样的事情:

INSERT INTO SOME_TAB(THE_KEY, THE_SELECT)
VALUES (1, 'SELECT COUNT(*) FROM ANOTHER_TAB')

当选择很简单时,它很容易,但是当选择变得更复杂时,那么保持选择和格式的正确转义会很麻烦。

例如,如果看起来像这样,则更容易读取SELECT:

SELECT COUNT(*) 
  FROM ANOTHER_TAB

但这要求我在引用文本中加入换行符。

对于另一个问题,要逃避这样的报价是很痛苦的' STATUS ='''''' 我想编写一个引用代码。

另一个问题是,一旦我将引号放入引号,我就会失去语法高亮。

是否有某种存储过程可以帮助进行格式化?

我认为它看起来像这样:

INSERT INTO SOME_TAB(THE_KEY, THE_SELECT)
VALUES (1, 
QUOTETHIS(SELECT COUNT(*) 
            FROM ANOTHER_TAB 
           WHERE STATUS = 'ON'
         ))

也就是说,QUOTETHIS将所有内容放在parens和引号之间。这很像Perl的qw()功能。

另一个想法是做这样的事情:

INSERT INTO SOME_TAB(THE_KEY, THE_SELECT)
VALUES (1, READFILEASSTRING('FILE_CONTAINS_SELECT.sql'))

然后我可以维护一堆包含选择的单个文件,然后语法突出显示就可以了。

1 个答案:

答案 0 :(得分:1)

这可能不太理想,但为什么不为转义字符使用不同的字符('),例如:然后您需要做的就是使用REPLACE方法替换|带有逃脱角色的角色。

Click here for code