tsql - TSql SqlParameters - 非法值或排序规则问题?
问题描述
以下sql运行并返回一行
SELECT * FROM MyTable WHERE MyCol='01««01'
但是,如果此 sql 被参数化并执行
EXEC execustesql 'SELECT * FROM MyTable WHERE MyCol=@p1',N'p1 nvarchar(6)',@p1=N'01««01'
它返回 0 行。
我尝试将各种 COLLATION(Latin1_General_CI_AI、SQL_Latin1_General_CP1_CI_AI)显式添加到列和参数占位符的过滤器中,例如
WHERE MyCol COLLATE collation=@p1 COLLATE collation
但似乎无法返回任何行。
另一个我不确定是否相关的复杂情况是字符 « 是 ascii 174,但如果我运行
SELECT convert(varbinary(max),'01««01')
returns 0x3031ABAB3031 i.e. 171
所以我也尝试过使用该值并将 ascii 174 替换为 asc 171 即使它是不同的字符。
那么我的问题是排序规则问题还是 Sql 参数不接受包含某些 ascii 值的值......或其他?
解决方案
推荐阅读
- amazon-web-services - 我是否可以在不拥有域的情况下在 AWS 提供的 ALB 子域上设置 SSL?
- google-sheets - 从一个单元格中查找多个值
- excel - 使用 MS excel 文件中的 URL 链接下载多个图像
- database - db关闭时如何处理flyway
- python - 正则表达式在标记之间拾取文本并包含最后一个标记
- javascript - 如何将两个API响应数组合并到一个数组中并返回数据Angular 8
- html - 如何在一个包含多个 div 的 div 中选择特定的 P 元素?
- yocto - 使用基本身份验证服务 sstate-cache
- opencl - ArrayFire OpenCL 问题
- python - Python:如何样式化多个变量的声明(具有不同的名称长度)