在回答这个问题时,我对某些我无法找到足够答案的事情感到不确定.
使用二进制文件utf8_bin和不区分大小写的utf8_general_ci排序规则之间有什么实际区别?
我可以看到三个:
两者都有不同的排序顺序; _bin排序顺序可能会将任何变音符号放在字母表的末尾,因为字节值会被比较(对吗?)
只有区分大小写的搜索 _bin
没有A = Ä平等_bin
是否还有其他差异或副作用需要注意?
参考:
类似的问题没有解决这个问题:
是否有可以在mysql中运行的查询,显示所有表及其默认排序规则?如果有的话可以更好地显示所有表的所有列上的所有排序规则.
刚刚从上一个问题得到了这个答案,它有效!
SELECT username, (SUM(rating)/COUNT(*)) as TheAverage, Count(*) as TheCount
FROM ratings WHERE month='Aug' GROUP BY username HAVING TheCount > 4
ORDER BY TheAverage DESC, TheCount DESC
Run Code Online (Sandbox Code Playgroud)
但当我坚持这个额外的位时,会出现这个错误:
文档#1267 - 操作'='的非法混合排序(latin1_swedish_ci,IMPLICIT)和(latin1_general_ci,IMPLICIT)
SELECT username, (SUM(rating)/COUNT(*)) as TheAverage, Count(*) as TheCount FROM
ratings WHERE month='Aug'
**AND username IN (SELECT username FROM users WHERE gender =1)**
GROUP BY username HAVING TheCount > 4 ORDER BY TheAverage DESC, TheCount DESC
Run Code Online (Sandbox Code Playgroud)
该表是:
id, username, rating, month
我已将我们的一个数据库(DB1)从SQL Server 2008移动到2012年,当我运行存储过程时,我收到以下错误
在等于操作中无法解决"SQL_Latin1_General_CP1_CI_AS"和"Latin1_General_CI_AS"之间的排序规则冲突
我使用了更改了数据库的排序规则
ALTER DATABASE [optimiser] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [optimiser] COLLATE SQL_Latin1_General_CP1_CI_AS
ALTER DATABASE [optimiser] SET MULTI_USER
Run Code Online (Sandbox Code Playgroud)
但是每当存储过程运行时我仍然会收到错误.我相信因为SP正在使用连接到另一个数据库(GE的ihistorian)并且它具有排序规则不匹配.无论如何要解决这个问题.
在旧服务器DB1设置为Latin1_General_CI_AS,这工作正常.DB的新位置具有默认值SQL_Latin1_General_CP1_CI_AS.是否值得将新服务器上的排序规则更改为DB1返回Latin1_General_CI_AS?
我之前创建了一个MySQL表,现在我想找出一些字段正在使用的排序规则.我可以使用哪些SQL或MySQL命令来发现它?
我最近安装了SQL Server 2008,并选择了排序规则作为区分大小写.我想让它对整个实例不区分大小写(不适用于该实例中的数据库).如果我更改了排序规则,它是否会影响任何现有数据库?如果真是这样,那么是以哪种方式?
当我通过phpMyAdmin创建一个新的MySQL数据库时,我可以选择排序规则(例如-default,armscii8,ascii,...和UTF-8).我知道的是UTF-8,因为我总是在HTML源代码中看到这一点.但是默认排序规则是什么?这些选择之间有什么区别,我应该使用哪一个?
我的表网站
Website_Name//column name
Google
Facebook
Twitter
Orkut
Frype
Skype
Yahoo
Wikipedia
Run Code Online (Sandbox Code Playgroud)
我使用utf8_bin collation然后我的查询在网站搜索维基百科是
Select Website_Name from Website where lower(Website_Name)='wikipedia'
Run Code Online (Sandbox Code Playgroud)
如果我使用utf8_unicode_ci然后我的选择查询在网站搜索维基百科是
Select Website_Name from Website where Website_Name='wikipedia'
Run Code Online (Sandbox Code Playgroud)
现在我想知道哪种排序规则最好,具体取决于以下查询
我想更改数据库的所有表的所有列的排序规则.在堆栈溢出的其他帖子中我发现了这个脚本:( 发布)
SELECT 'ALTER TABLE [' + SYSOBJECTS.Name + '] ALTER COLUMN [' + SYSCOLUMNS.Name + '] ' +
SYSTYPES.name +
CASE systypes.NAME
WHEN 'text' THEN ' '
ELSE
'(' + RTRIM(CASE SYSCOLUMNS.length
WHEN -1 THEN 'MAX'
ELSE CONVERT(CHAR,SYSCOLUMNS.length)
END) + ') '
END
+ ' ' + ' COLLATE Latin1_General__CI_AI ' + CASE ISNULLABLE WHEN 0 THEN 'NOT NULL' ELSE 'NULL' END
FROM SYSCOLUMNS , SYSOBJECTS , SYSTYPES
WHERE SYSCOLUMNS.ID = SYSOBJECTS.ID
AND SYSOBJECTS.TYPE = 'U'
AND SYSTYPES.Xtype …Run Code Online (Sandbox Code Playgroud) 我正在研究一个视图,其中我在两个来自两个不同服务器的表上使用内连接.我们正在使用链接服务器.运行查询时,我收到此消息:
无法在等于操作中解决"SQL_Latin1_General_CP1_CI_AS"和"Arabic_CI_AS"之间的排序规则冲突.
我对整理不太了解.通过互联网搜索我找到了使用的解决方案COLLATE,但这个概念COLLATE对我来说并不清楚.它会改变任何数据库的内容吗?我正在寻找一个解决方案,而无需更改数据库的任何内容.
欢迎任何有关这些概念的好学习材料.