【问题标题】:SQL query to make all data in a column UPPER CASE?SQL查询使列中的所有数据大写?
【发布时间】:2010-10-25 21:41:41
【问题描述】:

我需要一个 SQL 查询来使列中的所有数据都大写?

有什么想法吗?

【问题讨论】:

    标签: sql uppercase


    【解决方案1】:

    永久:

    UPDATE
      MyTable
    SET
      MyColumn = UPPER(MyColumn)
    

    临时:

    SELECT
      UPPER(MyColumn) AS MyColumn
    FROM
      MyTable
    

    【讨论】:

      【解决方案2】:

      如果您想只更新当前不是大写的行(而不是所有行),您需要使用COLLATE 来识别差异,如下所示:

      UPDATE MyTable
      SET    MyColumn = UPPER(MyColumn)
      WHERE  MyColumn != UPPER(MyColumn) COLLATE Latin1_General_CS_AS 
      

      关于排序规则

      区分大小写取决于您的排序规则设置,默认情况下通常不区分大小写。

      排序规则可以设置在Server, Database, Column, or Query级别:

      -- Server
      SELECT SERVERPROPERTY('COLLATION')
      -- Database
      SELECT name, collation_name FROM sys.databases
      -- Column 
      SELECT COLUMN_NAME, COLLATION_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE CHARACTER_SET_NAME IS NOT NULL
      

      Collation Names 指定字符串应该如何编码和读取,例如:

      • Latin1_General_<b><i>CI</i></b>_AS → 不区分大小写
      • Latin1_General_<b><i>CS</i></b>_AS → 区分大小写

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-22
        • 1970-01-01
        • 2020-05-03
        • 1970-01-01
        • 2018-04-28
        相关资源
        最近更新 更多