在使用Server比较查询中的字符串时,我希望忽略大小写。到目前为止,我可以这样做:
SELECT *
FROM Venue
WHERE
Name COLLATE Latin1_general_CI_AI Like '%cafe%' COLLATE Latin1_general_CI_AI是否有一种方法来设置全局指令,使其能够影响每个查询?就像这样:
SET COLLATE Latin1_general_CI_AI;
SELECT *
FROM Venue
WHERE
Name Like '%this%';
SELECT *
FROM Venue
WHERE
Name Like '%that%';
...谢谢!
发布于 2015-05-12 19:30:02
是否有一种方法来设置全局指令,使其能够影响每个查询?
不是的。
排序规则不是应用于查询的会话属性,它不能动态更改。
这个请求的另一个问题是,区分大小写并不是一个可以自己启用或禁用的选项:它是排序规则的属性,就像重音敏感性、宽度敏感性、特定字母排列的顺序等。一个查询可以比较多个字段,每个字段都有不同的排序规则。因此,即使您可以设置对会话有效的排序规则,这也可能会迫使其他排序规则的列在不被请求时动态转换排序规则。全局会话设置还会影响排序(即TOP(n)、ORDER等),而不仅仅是影响比较。
由于问题是用户希望确定每次执行是否忽略部分排序规则,所以有几个选项,但所有选项都会导致一些性能损失:
- For default case-sensitive (don't do anything):@SearchParam = 'This‘
-对案件不敏感:
@SearchParam = 'tTiI‘
LOWER():
如果(@CaseIn灵敏度= 1)开始设置为SET @SearchParam =较低( @SearchParam );结束;选择*从大小写@CaseIn事敏感的地点选择*当1,然后较低(名称)其他名称结束为'%‘+@SearchParam+ '%';https://stackoverflow.com/questions/30196848
复制相似问题