TSQL使所有缺少元音的单词大写

时间:2015-07-23 01:21:02

标签: sql-server tsql

我很难生成一个脚本,如果它们不包含元音,则会使字符串中的所有子字符串成为大写字母。

例如: 'Hammer Products Llc'应该是:'Hammer Products LLC'。 要么: '49 Ways Ltd'应该是:'49 Ways LTD'。

作为应用程序开发人员,我仍在研究基于TSQL集的处理概念,并尽可能避免迭代。因此,除了识别那些在其中包含缺少元音的单词的行的任务...对于我的生活,我不能想到基于集合的方式来识别然后进一步更新那些子字符串而不是迭代它们。

到目前为止,我正在尝试识别那些具有缺少元音的子字符串的行的第一部分。我唯一想到的是将每个字符串和Split()用一个自定义函数...然后取出每个拆分的单词并测试它们以查看它是否都是辅音。然后,如果所有辅音都对该单词执行更新。

我主要担心的是这种方法处理起来会非常繁重。这是一个真正的大脑扭转者,在正确的方向任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

你可以很容易地找到哪些字符串有一个没有元音的单词,例如:

where ' ' + lower(str) + ' ' not like '% %[aeiou]% %'

请注意,这不会考虑标点符号。这有点困难,因为SQL Server不支持正则表达式。

将字符串的一部分修改为大写更加困难。您使用split()的想法绝对是一种方法。另一种是编写用户定义的函数。

但我的建议是在另一个工具中完成这项工作。如果您正在学习SQL,请尝试将其用于更适合的任务。