zoukankan      html  css  js  c++  java
  • AccentInsensitive, Accent Sensitive, a ã, e é 模糊查询

    最近在弄一个欧洲老头的需求,说查询josé,但他输入的却是jose,开始以为SQL Server确实不应该给他查出来才对,但老头却要求要查出来,而且还说google都可以实现,如果不能实现,那就不给上线~~ 先BS下,然后自己回来研究这个,却发现很难入门,完全不知道关键字是啥~~

    搜索了一个晚上+半个上午,才找到,原来就是SQL Server DB create的时候,选择字符集,Accent Sensitive 或者 Accent Insensitive,说到最后,就是不知道关键字,知道关键字,就都好办了,开始还想着encode, decode什么的~,哎

    那现在来总结下更改已经创建好的database 的collate

    Update 原有数据的step
    1. 知道collationid更新后的是多少
     
    2. 执行下面的代码
     
    run ALTER DATABASE BQEGSRNet10E9 COLLATE Chinese_PRC_CI_AI 可能会报错误出来
    The   database   could   not   be   exclusively   locked   to   perform   the   operation ……
     
    这时需要将该数据库改成单用户的,便可以正常run刚才的代码,原因应该是有约束存在
     

    update db sql script

    ALTER DATABASE BQEGSRNet10E9 COLLATE Chinese_PRC_CI_AI

    EXEC   sp_configure   'allow updates',1     RECONFIGURE   WITH   OVERRIDE   
    GO
    --
    UPDATE   syscolumns   SET   collationid=61476     
    ----------------------------------^^^^这个id必须在帮助里查到和你想改的规则对应   
    WHERE   collation='Chinese_PRC_CI_AS'   
    ----------------^^^^^^^^^^^^^^^^^^这是旧的规则   
    and   id   in   (SELECT   id   FROM   sysobjects   WHERE   xtype='U')   
    GO
    EXEC   sp_configure   'allow updates',0     RECONFIGURE   WITH   OVERRIDE  
    GO

    当然,还有另外的解决办法,但是需要在查询栏位上下功夫,且每个要查询的地方都要设置了,就是这只collate

    SELECT    *    FROM    dbo.test_table
    WHERE    remark COLLATE Latin1_General_CI_AI  LIKE '%e%' 
  • 相关阅读:
    mysql5.7.11修改root默认密码
    linux tar文件解压
    用Maven插件生成Mybatis代码/数据库
    java对象与json对象间的相互转换
    json串转对象
    maven web 项目中启动报错java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener
    MyBatis多数据源配置(读写分离)
    使用HTML5 Web存储的localStorage和sessionStorage方式
    谷歌浏览器 DEV Tools
    数据库建表原则
  • 原文地址:https://www.cnblogs.com/forward/p/1297115.html
Copyright © 2011-2022 走看看