gpt4 book ai didi

variables - SQLCMD 使用 LIKE '%@%'

转载 作者:行者123 更新时间:2023-12-02 22:53:17 49 4
gpt4 key购买 nike

我尝试使用 SQLCMD.EXE 运行查询,但在处理 LIKE 部分时遇到问题。

WHERE email LIKE '%%@%%'

我认为这是 cmd 提示符的错误,而不是 SQLCMD.EXE,因为我收到错误:

Syntax error "@%'"

我通过 Notepad++ (NppExec) 运行它,指向 bat 文件,如下所示:

H:\scripts\SQL.bat "$(CURRENT_WORD)"

这会导致查询在被 SQLCMD.EXE 调用使用之前用双引号引起来。 SQLCMD.EXE 调用然后在 bat 文件中运行,如下所示:

SQLCMD.EXE -U user -P %pass% -S %server% -Q %sql% -d %table%

除了这个 LIKE '%%@%%' 部分之外,它对于我使用的任何查询都很完美。

更新

我又做了一些测试,并认为我已将问题范围缩小到 %@ 的问题。

所以像这样的查询工作正常:

  • 从表中选择名称,其中名称类似于“测试”
  • 从表中选择名称,其中名称类似于“test%”
  • 从表中选择名称,其中名称类似于“%%test”

但是这些会导致错误:

  • 从表中选择名称,其中名称类似于“%test”
  • 从表中选择名称,其中名称类似于“%test%”

这很好,因为我可以在查询中将 % 加倍,但我尝试过 %%@%%%@%% 他们会抛出错误。分别是语法错误“@'””语法错误“@%'””

此外,这些变量的原因是我包含了一些逻辑,以便它可以检测表名并针对不同的服务器和数据库运行。

这是bat文件

set sql=%1
iff %@index[%sql%,sur_] GT -1 THEN
SET SERVER=server1
SET table=tablename
SET pass=password
else
SET SERVER=server2
SET table=tablename
SET pass=password
endiff
SQLCMD.EXE -U usr -P %pass% -S %server% -Q %sql% -d %table%

出现奇怪语法的原因是该命令是通过 TCC/LE (see here) 运行的。

最佳答案

我不太确定您将 % 加倍的原因是什么,但看起来您的意图是在电子邮件列中查找包含 @ 的值>。如果是这样,您可以尝试重写该子句,如下所示:

WHERE CHARINDEX('@', email) > 0

如果是 @ 符号导致问题,请改用 CHAR(64)

WHERE CHARINDEX(CHAR(64), email) > 0

关于variables - SQLCMD 使用 LIKE '%@%',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15071314/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com