这两个查询给了我完全相同的结果:
select * from topics where name='Harligt';
select * from topics where name='Härligt';
Run Code Online (Sandbox Code Playgroud)
这怎么可能?看起来像mysql在搜索时将åäö翻译成aao.有什么办法可以解决这个问题吗?
据我所知,我到处都使用utf-8编码.终端和php都会出现同样的问题.
我的数据库不是UTF8,我想将所有表转换为UTF8,我该怎么做?
关注Sivaram Chintalapudi 提出的这个问题,我很感兴趣的是PostgreSQL中是否可以进行自然 - 或"人性化" - 对包含多位数字和单词/字母混合的字符串进行排序.没有固定的字符串中的单词和数字的模式,并且字符串中可能有多个多位数字.
我经常看到这个常见的地方是在Mac OS的Finder中,它自然地对包含混合数字和单词的文件名进行排序,在"3"之后放置"20",而不是在它之前.
所需的校对顺序将由算法产生,该算法将每个字符串拆分为字母数字边界的块,然后对每个部分进行排序,处理具有正常整理的字母块和用于整理目的的数字块作为整数.所以:
'AAA2fred'将成为('AAA',2,'fred')和'AAA10bob'将成为('AAA',10,'bob').然后可以根据需要对它们进行排序:
regress=# WITH dat AS ( VALUES ('AAA',2,'fred'), ('AAA',10,'bob') )
regress-# SELECT dat FROM dat ORDER BY dat;
dat
--------------
(AAA,2,fred)
(AAA,10,bob)
(2 rows)
Run Code Online (Sandbox Code Playgroud)
与通常的字符串排序规则相比:
regress=# WITH dat AS ( VALUES ('AAA2fred'), ('AAA10bob') )
regress-# SELECT dat FROM dat ORDER BY dat;
dat
------------
(AAA10bob)
(AAA2fred)
(2 rows)
Run Code Online (Sandbox Code Playgroud)
但是,记录比较方法没有概括,因为Pg不会比较ROW(..)构造或不等数量条目的记录.
给定此SQLFiddle中的示例数据,默认的en_AU.UTF …
我登录MariaDB/MySQL并输入:
SHOW COLLATION;
Run Code Online (Sandbox Code Playgroud)
我看到的utf8mb4_unicode_ci和utf8mb4_unicode_520_ci可用的排序规则之一.这两种排序规则之间有什么区别,我们应该使用哪种排序规则?
我试图在SQL 2008数据库中存储阿拉伯字符串,但它转换为"问号"为什么?我该怎么办?
我想要一个UTF8排序规则来支持:
是否UTF8_GENERAL_CI支持所有这些语言?
我刚刚安装了PhpMyAdmin v4.1.5英文版
我已将其设置为访问2台服务器 - 我的PC上的本地服务器和服务器上的远程服务器
一切都适合我的本地PC,但当我登录到我的远程服务器时,我收到了消息
错误
MySQL说:
#1273 - 未知校对:'utf8mb4_general_ci'
搜索PhpMyAdmin代码会在DatabaseInterface.class.php中找到对此的一个引用
if (PMA_MYSQL_INT_VERSION > 50503) {
$default_charset = 'utf8mb4';
$default_collation = 'utf8mb4_general_ci';
} else {
$default_charset = 'utf8';
$default_collation = 'utf8_general_ci';
}
Run Code Online (Sandbox Code Playgroud)
不知道这是什么,但它似乎错误地设置了默认的charset&collation
对于以下MySQL创建数据库语句,postgresql中的等价物是什么?:
CREATE DATABASE IF NOT EXISTS `scratch`
DEFAULT CHARACTER SET = utf8
DEFAULT COLLATE = utf8_unicode_ci;
Run Code Online (Sandbox Code Playgroud)
我目前有:
CREATE DATABASE "scratch"
WITH OWNER "postgres"
ENCODING 'UTF8'
TABLESPACE "pg_default";
Run Code Online (Sandbox Code Playgroud)
这还不够,还是我应该更具体LOCALE一些?
我无法更新临时表.这是我的查询
CREATE TABLE #temp_po(IndentID INT, OIndentDetailID INT, OD1 VARCHAR(50), OD2 VARCHAR(50),
OD3 VARCHAR(50), ORD VARCHAR(50), NIndentDetailID INT, ND1 VARCHAR(50), ND2 VARCHAR(50),
ND3 VARCHAR(50), NRD VARCHAR(50), Quantity DECIMAL(15,3))
INSERT INTO #temp_po(IndentID, OIndentDetailID, OD1, OD2, OD3, ORD)
SELECT ID.IndentID, ID.IndentDetailID, ID.D1, ID.D2, ID.D3, ID.RandomDimension
FROM STR_IndentDetail ID WHERE ID.IndentID = @IndentID
UPDATE
t
SET
t.ND1 = CASE WHEN D.D1 = '' THEN NULL ELSE D.D1 END,
t.ND2 = CASE WHEN D.D2 = '' THEN NULL ELSE D.D2 END,
t.ND3 = CASE WHEN …Run Code Online (Sandbox Code Playgroud) collation ×10
mysql ×5
sql ×4
encoding ×2
postgresql ×2
sql-server ×2
unicode ×2
alter ×1
ddl ×1
mariadb ×1
natural-sort ×1
php ×1
phpmyadmin ×1
sorting ×1
t-sql ×1
tempdb ×1
utf-8 ×1