- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用 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/
我希望将 SQL 查询 Select count(*) from Table 的输出用作批处理脚本中的变量。我正在使用 sqlcmd 来执行此查询,但还没有想出如何正确执行此操作。 如有任何帮助或示例
我正在使用 powershell 并使用 Invoke-SqlCmd .我能够将变量传递给 SQL: $variables = @( "MyVariable='hello'" ) Invoke-Sql
我在调用 Invoke-SqlCmd 时遇到问题,因为它包含第二个 Invoke-SqlCmd 调用: function Get-Foo { $query=` @" WITH data AS (
我正在使用 sqlpackage.exe 部署 dacpac,需要为 dacpac 中的部署后脚本传递 SqlCMD 变量。我发现了一个相关问题here和 here . 但是我收到以下错误:以下 Sq
我正在使用 sqlpackage.exe 部署 dacpac,需要为 dacpac 中的部署后脚本传递 SqlCMD 变量。我发现了一个相关问题here和 here . 但是我收到以下错误:以下 Sq
我可以找到的所有文档和帮助线程都包含带有 Authentication=ActiveDirectoryIntegrated 的引用连接字符串,以便通过 AAD 集成命中 SQL。如果我使用的是 SSM
我有一个运行多个 *.sql 文件的批处理文件。目前,所有变量都已硬编码在 sql 文件中。我想知道如何从 SQLCMD 批处理文件中传递变量值。 变量名示例: DECLARE @TW_FROM DA
我正在使用 SQLCMD 运行一个 270 MB 的 .sql 文件。脚本文件 (.sql) 是使用 Red Gate SQL 数据比较同步向导生成的。由于内存不足,我无法从 SSMS 运行它。我登录
我以这种方式使用 sqlcmd 执行一些命令行批处理 (.bat): sqlcmd -i Scripts\STEP01.sql -o PROCESS.log -S MYSERVER -E -d MYD
在我的部署后脚本中,我想使用这样的通配符将所有脚本文件包含在一个文件夹中: :r .\$(ReleaseName)\*.sql 有没有办法做到这一点?我找不到任何.. 最佳答案 我让它工作: ':r
所以这是我想要运行的查询 sqlcmd -E -S localhost\MSSQLSERVER_2016 -i C:\Tables.sql 在这个实例中我有多个数据库,当上面的命令运行时,我不知道它针
我正在尝试在运行 SQL Server 2005 的 Windows 计算机上使用 sqlcmd 将查询写入 csv 文件。我们通常使用的命令行选项是: -l 60 -t 300 -r 1 -b -W
我正在尝试使用 sqlcmd 来执行一些 SQL 脚本。 使用带有简单查询的测试命令,例如: sqlcmd -S HOSTNAME -d MYDATABASE -Q 'SELECT Names FRO
我正在使用以下代码在远程机器上执行查询。 Invoke-Sqlcmd -ServerInstance $serverInstance -Database $dbName -InputFile $fil
我已经调用了许多.sql文件的fetchDb.bat文件 将数据库升级到最新版本 这是用于执行.sql文件内容的命令 sqlcmd %Sqlinstance% -d DataBase -i "file
我在一个文件夹的多个文本文件中有TSQL插入语句。我需要在Powershell中使用foreach循环在sql服务器上运行。它应该转到文件夹中的每个文件,读取执行查询并再次终止连接,再读取下一个文件,
我们在使用 Powershell 和 SQLCMD 时遇到问题,当 -v 参数变量中有空间时,powershell 将无法运行命令。 例如 sqlcmd ... -v VAR="Some space"
我有一个简单的 SQLCMD 脚本,其中包含如下几行: /* Load data into Exampletable */ BULK INSERT dbo.Example /* NOTE: I
如何根据系统日期将输出文本文件命名为 YYYYMMDD? sqlcmd -S DataBBB -i c:\scripts\followup.sql -o %DATE:~4,2%_%DATE:~
我刚刚通过Chocolatey重新安装了SQL Server Express 2014。该服务当前正在运行。 当我在CMD或Powershell中运行此命令时: > sqlcmd -e -S .\SQ
我是一名优秀的程序员,十分优秀!