有没有SQL函数可以帮助我反转字符串的顺序?

Is there a SQL function that can help me reverse an order of a string?

提问人:user14262341 提问时间:10/3/2023 最后编辑:logi-kaluser14262341 更新时间:10/4/2023 访问量:74

问:

我有这个字符串“Year/Month”,我想把它设为“Month/Year”。

现在我已经研究了该函数,但这会将类似的东西转换为,这不是我想要的。REVERSE'2023/10''01/3202'

然后我想到了正则表达式,但我不确定如何使用正则表达式函数来识别“/”并将“/”前面的所有内容移动到字符串的末尾。

也许类似的东西可以工作?从未使用过这个。REGEX_REPLACE

任何帮助将不胜感激。

SQL 正则表达式 HANA

评论

1赞 vc 74 10/3/2023
你能试试吗?REGEX_REPLACE(column, '(\d+)/(\d+)', '$2/$1')

答:

4赞 Ross Bush 10/3/2023 #1

如果数据始终按照您的描述进行格式化,并且不需要进行健全性检查,那么一种简单的方法是。

SELECT RIGHT('2023/10',2) + '/'+ LEFT('2023/10',4)

评论

0赞 user14262341 10/4/2023
嗨,这是正确的答案,非常感谢
0赞 Ross Bush 10/5/2023
没关系。我很高兴它有所帮助。
0赞 Iman_Ghavasieh 10/3/2023 #2

我建议使用字符串运算符。我在 PostgreSQL 中写了一个答案,但几乎每个 SQL 数据库都以相对相同的方式具有此功能,您应该阅读文档。

(编辑:我已经对其进行了一点修改,现在它也可以在MySQL上运行)

正如PostgreSQL文档中所写的,我们有一个函数和一个函数。因此,您需要做的就是从“YYYY/MM”字符串中获取最后两个字符,将其与“/”字符连接,然后将结果与前四个字符连接。substringconcat

select concat(substring('2023/10' from 6 for 2), '/', substring('2023/10' from 1 for 4))
// response: '10/2023'