Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 为什么字符串搜索在sybase中区分大小写,而在许多其他数据库中不区分大小写_Mysql_Sql Server 2008_Sybase_Rdbms - Fatal编程技术网

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'
  • 我认为这取决于MySQL中的
    字符集
    排序规则
    。默认字符集为
    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”。此设置是静态的,因此必须重新启动数据库才能生效

    重新启动后,运行sp_indsuspect检查索引,运行sp_tab_suspectptn检查分区表。完成后,您可以再次运行sp\u helpsort检查更改


    在处理字符集/排序顺序时,确保同时具有数据库转储和数据的BCP副本非常重要

    在大多数RDBMS中,可以配置每个数据库/列是否区分大小写。该设置的默认值因产品而异。谢谢。你能给我解释一下问题2吗?此外,我正在寻找在Sybase中配置区分大小写谢谢。所以,若我们改变字符集,那个么SQL将尝试重建索引。如果我错了,请纠正我。是的,如果您更改现有表的字符集,则它会将所有现有字符串值更新为新的字符集,并重新生成索引。