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

Sql 转义SELECT语句以在列中存储,sql,sql-server,tsql,Sql,Sql Server,Tsql,我需要在列中存储select语句 大概是这样的: INSERT INTO SOME_TAB(THE_KEY, THE_SELECT) VALUES (1, 'SELECT COUNT(*) FROM ANOTHER_TAB') SELECT COUNT(*) FROM ANOTHER_TAB INSERT INTO SOME_TAB(THE_KEY, THE_SELECT) VALUES (1, QUOTETHIS(SELECT COUNT(*) FROM

我需要在列中存储select语句

大概是这样的:

INSERT INTO SOME_TAB(THE_KEY, THE_SELECT)
VALUES (1, 'SELECT COUNT(*) FROM ANOTHER_TAB')
SELECT COUNT(*) 
  FROM ANOTHER_TAB
INSERT INTO SOME_TAB(THE_KEY, THE_SELECT)
VALUES (1, 
QUOTETHIS(SELECT COUNT(*) 
            FROM ANOTHER_TAB 
           WHERE STATUS = 'ON'
         ))
INSERT INTO SOME_TAB(THE_KEY, THE_SELECT)
VALUES (1, READFILEASSTRING('FILE_CONTAINS_SELECT.sql'))
如果选择很简单,那么它就很容易,但是如果选择变得更复杂,那么维护选择和格式的正确转义将是一件痛苦的事情

例如,如果SELECT如下所示,则更容易阅读:

INSERT INTO SOME_TAB(THE_KEY, THE_SELECT)
VALUES (1, 'SELECT COUNT(*) FROM ANOTHER_TAB')
SELECT COUNT(*) 
  FROM ANOTHER_TAB
INSERT INTO SOME_TAB(THE_KEY, THE_SELECT)
VALUES (1, 
QUOTETHIS(SELECT COUNT(*) 
            FROM ANOTHER_TAB 
           WHERE STATUS = 'ON'
         ))
INSERT INTO SOME_TAB(THE_KEY, THE_SELECT)
VALUES (1, READFILEASSTRING('FILE_CONTAINS_SELECT.sql'))
但这需要我在引用的文本中插入换行符

对于另一个问题,在“”上逃避类似“STATUS=”这样的引用是一件痛苦的事情。 我想只编码一个报价

还有一个问题是,一旦我将select放在引号中,我就会丢失语法突出显示

是否有某种类型的存储过程或其他有助于格式化的东西

我想它可能是这样的:

INSERT INTO SOME_TAB(THE_KEY, THE_SELECT)
VALUES (1, 'SELECT COUNT(*) FROM ANOTHER_TAB')
SELECT COUNT(*) 
  FROM ANOTHER_TAB
INSERT INTO SOME_TAB(THE_KEY, THE_SELECT)
VALUES (1, 
QUOTETHIS(SELECT COUNT(*) 
            FROM ANOTHER_TAB 
           WHERE STATUS = 'ON'
         ))
INSERT INTO SOME_TAB(THE_KEY, THE_SELECT)
VALUES (1, READFILEASSTRING('FILE_CONTAINS_SELECT.sql'))
也就是说,引号这将把所有的内容都放在括号内并引用。这很像Perl的
qw()
特性

另一个想法是这样做:

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

然后我可以维护一组包含选择的单独文件,然后语法高亮显示就可以了。

这可能不太理想,但是为什么不为转义字符(')使用不同的字符,例如:;然后您只需要使用REPLACE方法将|字符替换为转义字符


如果您使用参数化查询进行插入,则不应成为问题。您是在使用应用程序插入行,还是只是在SSM中摆弄?如果是后者,请告诉它编辑表中的行(在资源管理器中右键单击表)并输入查询。为什么不使用just use management studio并将文本粘贴到中。@Vincent我不使用management studio解决此问题,因为它是一个自动脚本。