我有一个sqlcmd实用程序文件,它返回的记录远远超过预期。这是文件的基本结构:
sqlcmd -S %1 -d %2
"Set NOCOUNT ON;
SELECT
col1,
col2,
col3
FROM some_table
WHERE
(
col1 LIKE '%text1%' OR col1 LIKE '%text2%'
OR
col2 LIKE '%text1%' OR col2 LIKE '%text2%'
OR
col3 LIKE '%text1%' OR col3 LIKE '%text2%'
)"
-s " "
-o some_output_file.txt
-s行中的东西实际上是一个制表符,可以使输出文件以制表符分隔。我在这个查询中返回了我的整个some_table。它应该只返回几条记录。我已经在SQL Server中测试了SQL,它运行正常。但是,当我使用sqlcmd(通过命令行)运行它时,它返回整个some_table。我不知道为什么。我认为它可能与sqlcmd中的通配符有关,但我找不到任何文档。
答案 0 :(得分:0)
我发现了我的错误。由于我是通过命令提示符(即批处理文件)执行此操作,因此我需要转义百分号,因为它们被Windows解释为。因此,对于LIKE,我需要使用%%而不是%。来逃避它们。