1

我需要一个选择查询,它根据大写字母的位置向数据添加一个空格,即使用此查询的“HelpMe”将显示为“Help Me”。请注意,我不能使用存储的函数来执行此操作,它必须在查询本身中完成。数据是可变长度的,查询必须在 SQL 中。任何帮助将不胜感激。谢谢

4

2 回答 2

1

您需要为此使用用户定义的函数,直到 MS 为我们提供对正则表达式的支持。解决方案类似于:

SELECT col1, dbo.RegExReplace(col1, '([A-Z])',' \1') FROM Table

Aldo 这将产生可以使用 TRIM 删除的前导空间。

替换正则表达式函数:

http://connect.microsoft.com/SQLServer/feedback/details/378520

关于 dbo.RegexReplace,您可以在以下位置阅读:

TSQL 用空字符串替换所有非 az/AZ 字符

于 2012-12-11T14:29:15.030 回答
0

假设如果您使用的是OracleRDBMS,则使用以下内容,

REGEX_REPLACE

SELECT REGEXP_REPLACE('ILikeToWatchCSIMiami',
           '([A-Z.])', ' \1')
           AS RX_REPLACE
      FROM dual
;

设法得到这个输出:* SQLFIDDLE

但正如你所见,它对诸如CSI虽然这样的词的处理并不好。

于 2012-12-11T14:36:18.240 回答