SQL Server : Make all UPPER case to Proper Case/Title Case

标签 sql sql-server uppercase title-case

我有一个导入时全部大写的表,我想将其转换为正确的大小写。你们用什么脚本来完成这个?

最佳答案

这个函数:

  • “正确大小写”由空格分隔的所有“大写”单词
  • 保留“小写单词”
  • 即使对于非英语字母也能正常工作
  • 可移植,因为它不使用最新 SQL Server 版本的奇特功能
  • 可以轻松更改为使用 NCHAR 和 NVARCHAR 来支持 unicode,以及您认为合适的任何参数长度
  • 可以配置空白定义
CREATE FUNCTION ToProperCase(@string VARCHAR(255)) RETURNS VARCHAR(255)
AS
BEGIN
  DECLARE @i INT           -- index
  DECLARE @l INT           -- input length
  DECLARE @c NCHAR(1)      -- current char
  DECLARE @f INT           -- first letter flag (1/0)
  DECLARE @o VARCHAR(255)  -- output string
  DECLARE @w VARCHAR(10)   -- characters considered as white space

  SET @w = '[' + CHAR(13) + CHAR(10) + CHAR(9) + CHAR(160) + ' ' + ']'
  SET @i = 1
  SET @l = LEN(@string)
  SET @f = 1
  SET @o = ''

  WHILE @i <= @l
  BEGIN
    SET @c = SUBSTRING(@string, @i, 1)
    IF @f = 1 
    BEGIN
     SET @o = @o + @c
     SET @f = 0
    END
    ELSE
    BEGIN
     SET @o = @o + LOWER(@c)
    END

    IF @c LIKE @w SET @f = 1

    SET @i = @i + 1
  END

  RETURN @o
END

结果:

dbo.ToProperCase('ALL UPPER CASE and    SOME lower ÄÄ ÖÖ ÜÜ ÉÉ ØØ ĈĈ ÆÆ')
-----------------------------------------------------------------
All Upper Case and      Some lower Ää Öö Üü Éé Øø Cc Ææ

关于SQL Server : Make all UPPER case to Proper Case/Title Case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/230138/

相关文章:

javascript - 在 XPATH 中使用 OR 的两个条件

sql - PostgreSQL - 使用 case 语句测试整数时返回字符串

mysql - 获取值上方和下方的行或最近的行

java - JPA 标准查询 : writing query with array operators

sql-server - 将 IndexedDB 与 Sql Server 同步

shell - 在shell中转换为大写

java.lang.OutOfMemoryError : Java heap space with hive 错误

sql - 单个 select 语句中的多个 cte,其中 ctes 可以相互引用

sql-server - 如何在从自身更新同一个表时为表添加别名?

python - 为什么这个字符串没有变成大写?