如何在PowerShell调用MySQL存储过程时正确使用LIKE关键字
你自行修改后的查询写法不正确,需要调整。
错误原因
- 你删除了原匹配条件中键、值两侧的单引号,原本需要匹配的是JSON格式片段
'worklistConfig':'clientLevel',修改后只要出现worklistConfig:clientLevel就会命中,匹配范围不符合你的原始需求。 - 你使用两对单引号包裹通配符的写法,若未结合转义规则使用,也会导致匹配条件错误。另外查询中包含的
\r\n是SQL语法允许的空白字符,不会影响执行结果,不需要额外处理。
正确处理方案
场景1:直接在PowerShell中拼接SQL语句调用存储过程
PowerShell中单引号包裹的字符串不会自动解析变量,内部的单引号用两个单引号转义即可,正确写法如下:
SELECT * FROM ch_form_worklist WHERE id = 1987 AND worklist LIKE '%''worklistConfig'':''clientLevel''%';
上述写法里,SQL层面会将两个连续的单引号解析为单个单引号,最终的匹配条件和你最开始验证过的正常运行的语句完全一致。
场景2:将匹配内容作为参数传入存储过程
你可以直接构造匹配字符串作为参数值传递,不需要在SQL侧做额外转义,PowerShell侧构造参数的示例:
$matchPattern = "%'worklistConfig':'clientLevel'%"
存储过程内部直接使用该参数做LIKE匹配即可。
内容的提问来源于stack exchange,提问作者Noufal netspective
相关产品推荐
相关产品推荐

