Mysql 为什么字符串搜索在sybase中区分大小写,而在许多其他数据库中不区分大小写
在我的应用程序开发中,我使用了Mysql 为什么字符串搜索在sybase中区分大小写,而在许多其他数据库中不区分大小写,mysql,sql-server-2008,sybase,rdbms,Mysql,Sql Server 2008,Sybase,Rdbms,在我的应用程序开发中,我使用了sqlserver&MySQLRDMS数据库。我不熟悉sybase数据库,在该数据库中,我发现字符串搜索默认情况下区分大小写,而在sqlserver和MySQL中则不区分大小写 1.是否有关于字符串搜索区分大小写的SQL标准? 2.如果此字符串列上有唯一的键索引,那么如果发现两行具有相同的字符串,但一行为大写,另一行为小写,是否会有任何问题? SELECT * FROM TABLE1 WHERE COL1 = 'Sample' SELECT * FROM TABLE
sqlserver
&MySQL
RDMS数据库。我不熟悉sybase
数据库,在该数据库中,我发现字符串搜索默认情况下区分大小写,而在sqlserver
和MySQL
中则不区分大小写1.是否有关于字符串搜索区分大小写的SQL标准?
2.如果此字符串列上有唯一的键索引,那么如果发现两行具有相同的字符串,但一行为大写,另一行为小写,是否会有任何问题?
SELECT * FROM TABLE1 WHERE COL1 = 'Sample'
SELECT * FROM TABLE1 WHERE COL1 = 'sample'
字符集
和排序规则
。默认字符集为latin1\u swedish\u ci
,其中ci
表示不区分大小写。您可以将其更改为latin1\u swedish\u cs
,以区分大小写
在MySQL和SQL server中,您可以在列、表、数据库和服务器级别设置字符集和排序规则
latin1_swedish_cs
,那么你将有两行“样本”和“样本”,而latin1_swedish_ci
你将只有第一行“样本”。因此,数据库中的所有字符串比较(在中,其中,DISTINCT,GROUP BY
)都将基于您设置的字符集和排序规则如果要在sqlserver中选择区分大小写的搜索。。试试这个
SELECT User_Id FROM Table
WHERE User_Id=@userid AND Password=@pwd COLLATE SQL_Latin1_General_CP1_CS_AS
这里@userid和@pwd是从用户发送到存储过程中的参数。对于Sybase ASE,您可能需要切换到nocase排序顺序
sp_helpsort
- 显示有关当前字符集和排序顺序的信息
从master..syscharset中选择id、csid、name、descpription,其中type>=2000
- 这将显示可用排序顺序的列表
sp\u配置“默认排序顺序”,*sortorder\u id*
- 是更改排序顺序的命令。对于ISO_1(ISO-8859-1)字符集,值应为“52”。此设置是静态的,因此必须重新启动数据库才能生效
在处理字符集/排序顺序时,确保同时具有数据库转储和数据的BCP副本非常重要 在大多数RDBMS中,可以配置每个数据库/列是否区分大小写。该设置的默认值因产品而异。谢谢。你能给我解释一下问题2吗?此外,我正在寻找在Sybase中配置区分大小写谢谢。所以,若我们改变字符集,那个么SQL将尝试重建索引。如果我错了,请纠正我。是的,如果您更改现有表的字符集,则它会将所有现有字符串值更新为新的字符集,并重新生成索引。