我今天发现(*),根据服务器的不同,我的TSQL命令区分大小写,这意味着当命名一个表的列时tableId
,以下指令可能不会成功:
SELECT TableId FROM myTable
取决于列的排序规则。SQL_Latin1_blablabla
似乎不区分大小写Latin1_blablabla
。
所以我的第一个问题是为什么!
第二个是:更改数据库中所有相关列的所有排序规则的最快技巧(sp?)是什么?
编辑:使事情很清楚:
SELECT tableId FROM myTable
在所有服务器上工作时
SELECT TableId FROM myTable
仅在具有SQL_Latin_blablabla
排序规则的服务器上工作。注意两个字符串之间的区别。我们在这里不是在谈论数据整理,而是在讨论这种整理对我们编写代码的方式的影响!
(*)在“发现”之后,我可以在此处使用一些附加的特定词来限定我的心理状态,但是所有这些词都是成年的…
继marc_s之后
sys.objects,sys.columns等将列名和对象名存储 在数据库的排序规则中 。因此,二进制排序规则意味着将对象名称视为二进制…
问题内容: 我正在读的书说 SQL Server支持两种字符数据类型-常规和Unicode。 常规数据类型包括CHAR和VARCHAR,而Unicode数据类型包括NCHAR和NVARCHAR。不同之处在于,常规字符为每个字符使用一个字节的存储空间,而Unicode字符则每个字符需要两个字节的存储空间。每个字符只有一个字节的存储空间,因此,为一列选择常规字符类型会限制您只能选择英语以外的一种语言,
问题内容: 我需要更改nvarchar变量的排序规则。通过文档: (…)3.可以在多个级别上指定COLLATE子句。其中包括: 强制转换表达式的排序规则。您可以使用COLLATE子句将字符表达式应用于特定的排序规则。字符文字和变量被分配了当前数据库的默认排序规则。列引用被分配了列的定义排序规则。有关表达式的排序规则,请参见排序规则优先级 (Transact-SQL)。 但是,我无法为此目的使用CA
问题内容: 我有这个清单: 我想使用方法按国家/地区名称对它们进行排序。如何做到这一点? 更新: 您能告诉我们如何比较它们以按字符串排序吗?阿根廷,奥地利,巴西等 问题答案: 有两种方法: 已落实定义一个接口 自然顺序 对你的对象,也就是使物体本身“知道”自己的排序。然后,您可以使用或仅从您的实现切换到类似的实现(如果不需要重复,则丢弃重复) 写一个来定义一个 强加的顺序, 然后调用 或(再次丢失
问题内容: 我有两个表,它们使用的是不同的排序规则。不允许串联来自具有不同排序规则的表中的列,例如,不允许使用以下SQL, 我的问题是,如何在不破坏表数据的情况下更改表的排序规则? 在此先感谢,乔治 问题答案: 您可以根据需要随时更改列排序规则。 例如 “数据库默认值”可以是您要使用的任何排序规则。 您可以使用以下方法永久更改列的排序规则
我想在基于Saxon的xslt转换中使用排序规则。源文件: 和我的转变: 这在氧气中几乎很好工作,输出为: (“”应该是第二个条目,但我想这是另一个问题) 看起来好像saxon现在想要使用作为文件。它不存在。 问题是:我如何在命令行上使用这个样式表。 如果合适的话,我还想问一下如何在两个“A”之间排序“?”但我可以在另一个问题中问这个。
问题内容: 在回答这个问题时,我不确定自己没有设法找到足够的答案。 使用二进制排序规则和不区分大小写的排序规则之间的实际区别是什么? 我可以看到三个: 两者的排序顺序不同;的排序顺序可能会将任何变音符放在字母表的末尾,因为比较了字节值(对吗?) 仅区分大小写的搜索 没有平等 还有其他需要注意的差异或副作用吗? 参考: 9.1.2。MySQL中的字符集和排序规则 9.1.7.6。mySQL手册中的_