具有字符参数的Powershell -invokesql

南希

我有读取excel文件并在sql数据库中搜索值的代码。这是代码的一部分:

    for ($i=1; $i -le $rowMax-1; $i++)
    { 
        $name = $sheet.Cells.Item($rowName+$i,$colName).text 
        $mail = $sheet.Cells.Item($rowMail+$i,$colMail).text 
        #test   $Query = ‘ SELECT  * FROM dbo.tbl1 where value = ‘ + “‘” +$mail + “‘”
        $Query = ‘ SELECT  * FROM dbo.tbl1 where id = 3’ 

        Invoke-Sqlcmd -serverinstance $DatabaseServerName -Database $Database -Username $Uid -Password $Pwd -query $Query   -ErrorAction Stop

        Write-Host ("My Name is: "+$name)
        Write-Host ("My mail is: "+$mail)
        Write-Host $query
    }
    #close excel file
    $objExcel.quit()

如果我用数字查询(SELECT * FROM dbo.tbl1 where id = 3),就可以了:

id           : 3
className    : PersonBase
keyValue     : 3
typeCd       : 6
value        : [email protected]
description  :
usermodify   :
datemodify   :
My Name is: G Karen
My mail is: [email protected]
 SELECT  * FROM dbo.tbl1 where id = 3

如果我执行查询:

$Query = ‘ SELECT  * FROM dbo.tbl1 where value = ‘ + “‘” +$mail + “‘”

我收到此错误:

Invoke-Sqlcmd:“''附近的语法不正确。消息102,级别15,状态1,过程,行1。在行:8 char:1 + Invoke-Sqlcmd -serverinstance $ DatabaseServerName -Database $ Database ... + ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ + CategoryInfo:InvalidOperation:(:) [Invoke-Sqlcmd],SqlPowerShellSqlExecutionException + FullyQualifiedErrorId:SqlError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

在我调试时,输出看起来很好。我可以将其粘贴到服务器上,并且select语句可以正常工作:

My Name is: G Karen
My mail is: [email protected]
 SELECT  * FROM dbo.tbl1 where value = '[email protected]'

怎么了?

mklement0

PowerShell乐于接受Unicode(非ASCII范围)引号,而不是通常的ASCII范围引号-参见此答案

例如,如您的代码中所示:

  • (左单引号U+2018)可以代替ASCII范围'(APOSTROPHE,U+0027),又称单引号

  • U+201C可以使用(LEFT DOUBLE QUOTATION MARK,)代替ASCII范围"(QUOTATION MARK,U+0022),又名双引号

相比之下,我怀疑,SQL Server就不会怀疑这些替代的,所以你必须使用ASCII范围',并"为引号嵌入在查询中

因此,立即修复为:

$Query = ‘ SELECT  * FROM dbo.tbl1 where value = ‘ + “'” +$mail + “'”

注意如何只将里面 的字符“...”从更改'PowerShell解释并删除的外部引号可以继续使用非ASCII范围的引号。


但是,您可以更简单地将可扩展字符串"..."嵌入式变量引用结合使用:

$Query = " SELECT  * FROM dbo.tbl1 where value = '$mail'"

请注意,我还将外部双引号切换为其ASCII范围版本。即使在PowerShell中,通常也要坚持使用通常的ASCII范围引号,这样最好,以免共享代码时由于字符编码而引起问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有特殊字符的PowerShell参数

来自分类Dev

具有特殊字符的PowerShell参数

来自分类Dev

具有“ 3”参数的powershell“ ParseExact”:“未将字符串识别为有效的DateTime

来自分类Dev

具有Robocopy和参数传递的Powershell

来自分类Dev

解码具有特殊字符的URL参数

来自分类Dev

具有可发现的参数默认值的Powershell脚本?

来自分类Dev

具有参数抛出null异常的Powershell函数

来自分类Dev

具有参数抛出null异常的Powershell函数

来自分类Dev

具有可发现的参数默认值的Powershell脚本?

来自分类Dev

VB.NET查询字符串具有参数

来自分类Dev

具有多个参数的字符串的通用重写规则

来自分类Dev

Swift中的Println与具有字符串参数的方法

来自分类Dev

具有递归可变参数功能的字符串流?

来自分类Dev

具有多个参数的Android复数字符串

来自分类Dev

具有多个连接参数的MySQL的连接字符串?

来自分类Dev

AngularJS中具有多个参数的查询字符串

来自分类Dev

Oracle PL / SQL检查参数是否具有特殊字符

来自分类Dev

AngularJS中具有多个参数的查询字符串

来自分类Dev

具有特定参数的多字符串选择

来自分类Dev

在Powershell中,在函数中具有参数或在函数中放入参数之间有区别吗?

来自分类Dev

具有两个参数的Powershell函数给出一个参数

来自分类Dev

具有PSCredential的Powershell调用命令无法处理参数'Credential'上的参数转换

来自分类Dev

具有UiPath的Powershell

来自分类Dev

PowerShell:每个参数集必须至少具有一个对该参数集唯一的参数

来自分类Dev

使用resharper将字符串参数重构为具有字符串属性的接口

来自分类Dev

具有字符串输出参数的WinAPI函数有多少一致性?

来自分类Dev

具有字符串输出参数的WinAPI函数有多少一致性?

来自分类Dev

在本地计算机上具有FilePath的PowerShell Invoke-Command-模糊参数错误?

来自分类Dev

Typescript:具有枚举类型参数的函数分配给带有字符串参数类型的回调

Related 相关文章

  1. 1

    具有特殊字符的PowerShell参数

  2. 2

    具有特殊字符的PowerShell参数

  3. 3

    具有“ 3”参数的powershell“ ParseExact”:“未将字符串识别为有效的DateTime

  4. 4

    具有Robocopy和参数传递的Powershell

  5. 5

    解码具有特殊字符的URL参数

  6. 6

    具有可发现的参数默认值的Powershell脚本?

  7. 7

    具有参数抛出null异常的Powershell函数

  8. 8

    具有参数抛出null异常的Powershell函数

  9. 9

    具有可发现的参数默认值的Powershell脚本?

  10. 10

    VB.NET查询字符串具有参数

  11. 11

    具有多个参数的字符串的通用重写规则

  12. 12

    Swift中的Println与具有字符串参数的方法

  13. 13

    具有递归可变参数功能的字符串流?

  14. 14

    具有多个参数的Android复数字符串

  15. 15

    具有多个连接参数的MySQL的连接字符串?

  16. 16

    AngularJS中具有多个参数的查询字符串

  17. 17

    Oracle PL / SQL检查参数是否具有特殊字符

  18. 18

    AngularJS中具有多个参数的查询字符串

  19. 19

    具有特定参数的多字符串选择

  20. 20

    在Powershell中,在函数中具有参数或在函数中放入参数之间有区别吗?

  21. 21

    具有两个参数的Powershell函数给出一个参数

  22. 22

    具有PSCredential的Powershell调用命令无法处理参数'Credential'上的参数转换

  23. 23

    具有UiPath的Powershell

  24. 24

    PowerShell:每个参数集必须至少具有一个对该参数集唯一的参数

  25. 25

    使用resharper将字符串参数重构为具有字符串属性的接口

  26. 26

    具有字符串输出参数的WinAPI函数有多少一致性?

  27. 27

    具有字符串输出参数的WinAPI函数有多少一致性?

  28. 28

    在本地计算机上具有FilePath的PowerShell Invoke-Command-模糊参数错误?

  29. 29

    Typescript:具有枚举类型参数的函数分配给带有字符串参数类型的回调

热门标签

归档