【问题标题】:SQL:How can I make the function that change all the uppercase to lowercase and lowercase to uppercase in a string [closed]SQL:如何制作将字符串中的所有大写字母更改为小写字母并将小写字母更改为大写字母的函数[关闭]
【发布时间】:2017-10-06 18:33:22
【问题描述】:

如何使函数将字符串中的所有大写字母变为小写字母并将小写字母变为大写字母 例如“HelloW world”到“hELLOw WORLD”

【问题讨论】:

  • 对我来说好像是作业。你试过什么了?发布您的代码。
  • 我会实现 translate 函数并为此目的使用参数。
  • 为什么我们总是问谚语和习惯的“这是作业吗?”在网站上?只是好奇……我忘了。
  • 什么版本的 SQL Server?也只是英文字母或所有字母?
  • 只是英文字母

标签: sql-server function sql-server-2016


【解决方案1】:

您可以编写一个函数,一次循环遍历字符串中的每个字符,如果它在小写字符集中,则应用 UPPER 函数,否则应用 LOWER 函数,并构建函数的输出字符串.

【讨论】:

  • 用ascii区分上下?
  • 这是一种方式。另一个是带有区分大小写排序规则的 PATINDEX。 (请注意,范围规范不起作用。必须键入要匹配的模式中的所有字母):stackoverflow.com/questions/4212110/…
  • 范围规范将使用二进制排序规则。
  • 好的,非常感谢
【解决方案2】:

您可以创建一个函数,光标将在其中迭代并选择/获取字符串值,如果它是小写字母,您可以使用SELECT UPPER('test string') 将字符串更改为大写。如果字符串值以大写形式出现您可以使用函数SELECT lOWER('test string') 转换为小写。

【讨论】:

  • 这不是 OP 要求的。看看他/她的例子
【解决方案3】:

您没有说明任何版本。对于 SQL Server 2017,您可以按照 Gordon 的建议使用 TRANSLATE

WITH T(S) AS
(
SELECT 'HelloW world'
)
SELECT TRANSLATE(S COLLATE Latin1_General_CS_AS, 
                'ABCDEFGHIJLKMNOPQRSTUVWXYZabcdefghijlkmnopqrstuvwxyz', 
                'abcdefghijlkmnopqrstuvwxyzABCDEFGHIJLKMNOPQRSTUVWXYZ')
FROM T

【讨论】:

  • 抱歉我忘记了,2016服务器能用吗?
  • 没有。这只是 2017 年
猜你喜欢
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
  • 2012-01-03
  • 2017-10-26
  • 2019-08-08
  • 2015-07-28
  • 1970-01-01
  • 2015-08-07
相关资源
最近更新 更多