Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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
使用sql查询将小写更改为大写(标题)_Sql_Sql Server_Title Case - Fatal编程技术网

使用sql查询将小写更改为大写(标题)

使用sql查询将小写更改为大写(标题),sql,sql-server,title-case,Sql,Sql Server,Title Case,我想使用sql查询更改大小写 e、 如果文本是:我的名字是伊珊·哈拉恩卡文本是混乱的,即它可能包含小写或大写字母 我希望输出是:我的名字是伊桑·哈拉恩卡 我很少处理sql查询。请帮忙。此SQL应该可以工作 从{YourTableName}中选择左上角、1+右下角、LEN-1此SQL应该可以工作 从{YourTableName}中选择UPPERLEFT,1+LOWERRIGHT,LEN-1在任何数据库中都没有这样的函数可以为您执行此操作。你必须写一个函数,对句子中的每个单词进行检查。请检查以下解决

我想使用sql查询更改大小写

e、 如果文本是:我的名字是伊珊·哈拉恩卡文本是混乱的,即它可能包含小写或大写字母

我希望输出是:我的名字是伊桑·哈拉恩卡

我很少处理sql查询。请帮忙。

此SQL应该可以工作

从{YourTableName}中选择左上角、1+右下角、LEN-1

此SQL应该可以工作


从{YourTableName}中选择UPPERLEFT,1+LOWERRIGHT,LEN-1

在任何数据库中都没有这样的函数可以为您执行此操作。你必须写一个函数,对句子中的每个单词进行检查。请检查以下解决方案:

MySql:

输出:

版权:


希望这有帮助

在任何数据库中都没有这样的函数为您执行此操作。你必须写一个函数,对句子中的每个单词进行检查。请检查以下解决方案:

MySql:

输出:

版权:


希望这有帮助

首先需要创建函数


CREATE FUNCTION ProperCase(@OriginalText VARCHAR(8000))
RETURNS VARCHAR(8000)  
BEGIN 
DECLARE @CleanedText VARCHAR(8000) 
;with
  a1 as (select 1 as N union all select 1 union all
         select 1      union all select 1 union all
         select 1      union all select 1 union all
         select 1      union all select 1 union all
         select 1      union all select 1),
  a2 as (select 1 as N from a1 as a cross join a1 as b),
  a3 as (select 1 as N from a2 as a cross join a2 as b),
  a4 as (select 1 as N from a3 as a cross join a2 as b),
  Tally as (select top (len(@OriginalText)) row_number() over (order by N) as N from a4)

SELECT @CleanedText = ISNULL(@CleanedText,'') +  
     --first char is always capitalized?
CASE WHEN Tally.N = 1 THEN UPPER(SUBSTRING(@OriginalText,Tally.N,1))
     WHEN SUBSTRING(@OriginalText,Tally.N -1,1) = ' '  THEN UPPER(SUBSTRING(@OriginalText,Tally.N,1))
     ELSE LOWER(SUBSTRING(@OriginalText,Tally.N,1))
END

FROM Tally           WHERE Tally.N

首先,您需要创建函数


CREATE FUNCTION ProperCase(@OriginalText VARCHAR(8000))
RETURNS VARCHAR(8000)  
BEGIN 
DECLARE @CleanedText VARCHAR(8000) 
;with
  a1 as (select 1 as N union all select 1 union all
         select 1      union all select 1 union all
         select 1      union all select 1 union all
         select 1      union all select 1 union all
         select 1      union all select 1),
  a2 as (select 1 as N from a1 as a cross join a1 as b),
  a3 as (select 1 as N from a2 as a cross join a2 as b),
  a4 as (select 1 as N from a3 as a cross join a2 as b),
  Tally as (select top (len(@OriginalText)) row_number() over (order by N) as N from a4)

SELECT @CleanedText = ISNULL(@CleanedText,'') +  
     --first char is always capitalized?
CASE WHEN Tally.N = 1 THEN UPPER(SUBSTRING(@OriginalText,Tally.N,1))
     WHEN SUBSTRING(@OriginalText,Tally.N -1,1) = ' '  THEN UPPER(SUBSTRING(@OriginalText,Tally.N,1))
     ELSE LOWER(SUBSTRING(@OriginalText,Tally.N,1))
END

FROM Tally           WHERE Tally.N

这里是另一个Microsoft SQL函数:

 CREATE FUNCTION PROPERCASE(@TEXT AS VARCHAR(MAX))
RETURNS VARCHAR(MAX)
AS
BEGIN
   DECLARE @RESET BIT;
   DECLARE @STR VARCHAR(MAX);
   DECLARE @I INT;
   DECLARE @C CHAR(1);

   SELECT @RESET = 1, @I=1, @STR = '';

   WHILE (@I <= LEN(@TEXT))
    SELECT @C= SUBSTRING(@TEXT,@I,1),
               @STR = @STR + CASE WHEN @RESET=1 THEN UPPER(@C) ELSE LOWER(@C) END,
               @RESET = CASE WHEN @C LIKE '[A-ZA-Z]' THEN 0 ELSE 1 END,
               @I = @I +1
   RETURN @STR
END

下面是另一个Microsoft SQL函数:

 CREATE FUNCTION PROPERCASE(@TEXT AS VARCHAR(MAX))
RETURNS VARCHAR(MAX)
AS
BEGIN
   DECLARE @RESET BIT;
   DECLARE @STR VARCHAR(MAX);
   DECLARE @I INT;
   DECLARE @C CHAR(1);

   SELECT @RESET = 1, @I=1, @STR = '';

   WHILE (@I <= LEN(@TEXT))
    SELECT @C= SUBSTRING(@TEXT,@I,1),
               @STR = @STR + CASE WHEN @RESET=1 THEN UPPER(@C) ELSE LOWER(@C) END,
               @RESET = CASE WHEN @C LIKE '[A-ZA-Z]' THEN 0 ELSE 1 END,
               @I = @I +1
   RETURN @STR
END

这将对你有帮助。哪种关系数据库管理系统?SQL Server、MySQL还是??你试过什么吗?这会对你有帮助的。哪种关系数据库管理系统?SQL Server、MySQL还是??你试过什么吗?它只大写一个句子的第一个字母,而不是每个单词的第一个字母。它只大写一个句子的第一个字母,而不是每个单词的第一个字母。这看起来正是我所需要的-但是我在哪里以及如何将此功能添加到我的mysql?@daniel Crabbe-请接受我对回复延迟的道歉。但是,您只需要在mysql终端上以所需的权限执行上述脚本,然后插入用户定义的函数。然后简单地执行给定示例中所示的sql命令。这看起来与我需要的完全一样-但是我在哪里以及如何将此函数添加到我的mysql?@daniel Crabbe-请接受我对回复延迟的道歉。但是,您只需要在mysql终端上以所需的权限执行上述脚本,然后插入用户定义的函数。然后简单地执行sql命令,如给定示例所示。 select dbo.ProperCase('My nAme is iShAn halaRNkar')
 CREATE FUNCTION PROPERCASE(@TEXT AS VARCHAR(MAX))
RETURNS VARCHAR(MAX)
AS
BEGIN
   DECLARE @RESET BIT;
   DECLARE @STR VARCHAR(MAX);
   DECLARE @I INT;
   DECLARE @C CHAR(1);

   SELECT @RESET = 1, @I=1, @STR = '';

   WHILE (@I <= LEN(@TEXT))
    SELECT @C= SUBSTRING(@TEXT,@I,1),
               @STR = @STR + CASE WHEN @RESET=1 THEN UPPER(@C) ELSE LOWER(@C) END,
               @RESET = CASE WHEN @C LIKE '[A-ZA-Z]' THEN 0 ELSE 1 END,
               @I = @I +1
   RETURN @STR
END