繁体   English   中英

Lower()在Visual Studio 2010中SQL查询不起作用。 备择方案?

[英]Lower() In Visual Studio 2010 SQL Query Not Working. Alternatives?

这是交易。

我有2个数据库。 一个是较旧的并且已经扩展了数据。 另一个更新,相关数据较少。 它们共享相同的产品,只有一个拥有更多的数据。

我已经开始了一个项目,我想扩展新的数据库,以包含旧版数据库中存在的一些缺失数据。 问题是数据库之间的ID不匹配。 所以我不得不按名字搜索。 哪个可能是也可能不是同一个案例。 visual studio中的查询完全区分大小写。 我测试了这个,我很确定。

所以我的第一个想法就是用较低的功能进行搜索。 像这样:

WHERE lower([Name1]) LIKE lower('%Name2%') 

但是当我去运行它时它给了我一个错误。 Visual Studio自动尝试将语句的语法更改为:

WHERE 'lower'([Name1]) LIKE 'lower'('%Name2%') 

我可以发誓lower()是正确的语法。 我无法在google上找到任何替代方案,或者为什么visual studio不喜欢它。 事实上,我刚刚在SQL Management Studio中尝试了类似的一行,但它确实有效。 为什么它在Visual Studio中不起作用?

使用COLLATE指定区分大小写。 如果需要,只需强制不区分大小写的排序规则。 根据现有的数据整理,可能不需要它。 例如。:

SELECT ... FORM ...
WHERE Name1 COLLATE SQL_Latin1_General_CI LIKE '...';

首先,VS不会执行查询,您要查询的列上的排序规则将确定SQL是否将其视为区分大小写。 另外,因为你在比较中使用LIKE,你真正想要的更像是:

WHERE lower([Name1]) LIKE '%' + lower([Name2]) '%'

使用WHERE lower([Name1]) LIKE '%name2%'由于该值是常量(或输入?),因此您无需在此处将其转换为较低值。 你可以事先做到这一点。 另外,不确定[ ... ] 也不需要它们。

但我认为最好的选择是告诉数据库你要比较不区分大小写, 如下所示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM