sql - 内置函数将每个单词的首字母大写

标签 sql sql-server-2008 pascalcasing

如果 SQL Server 中已经存在这样的函数,我不想为此创建自定义函数。

输入字符串:这是我要转换的字符串
预期输出:This Is My String To Convert

最佳答案

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[InitCap] ( @InputString varchar(4000) ) 
RETURNS VARCHAR(4000)
AS
BEGIN

DECLARE @Index          INT
DECLARE @Char           CHAR(1)
DECLARE @PrevChar       CHAR(1)
DECLARE @OutputString   VARCHAR(4000)

SET @OutputString = LOWER(@InputString)
SET @Index = 1

WHILE @Index <= LEN(@InputString)
BEGIN
    SET @Char     = SUBSTRING(@InputString, @Index, 1)
    SET @PrevChar = CASE WHEN @Index = 1 THEN ' '
                         ELSE SUBSTRING(@InputString, @Index - 1, 1)
                    END

    IF @PrevChar IN (' ', ';', ':', '!', '?', ',', '.', '_', '-', '/', '&', '''', '(')
        SET @OutputString = STUFF(@OutputString, @Index, 1, UPPER(@Char))

    SET @Index = @Index + 1
END

RETURN @OutputString

END



Declare @str nvarchar(100)
SET @str = 'my string to convert'
SELECT @str = [dbo].[InitCap](@str)
SELECT @str 

关于sql - 内置函数将每个单词的首字母大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31610995/

相关文章:

c# - 如何将任何 pascal 大小写 JSON 对象转换为驼峰大小写 JSON 对象?

具有最高 COUNT 的 MySQL GROUP BY 字段(基于 JOIN)

mysql - SQL - 数据库设计,需要建议

sql - 错误消息4145,级别15,状态1,非 boolean 类型的表达式

visual-studio-2010 - 扩展属性不在 Visual Studio DB 项目中?

reactjs - 导入的 JSX 组件 NewsСardMedium 必须在 PascalCase 中——不是吗?

java - 如何在 Java 中将 CamelCase 转换为人类可读的名称?

mysql - 如何预测在给定数据库结构和给定表大小下完成 SQL 请求所需的资源?

sql - 我想要小时,分钟,两个日期时间的第二个差异

sql-server - 如何将计算列的数据类型强制为不允许空值的位字段?