Sql 转义SELECT语句以在列中存储
我需要在列中存储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
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解决此问题,因为它是一个自动脚本。