我该如何切割弦长未知的弦的左侧部分? (带有sql函数)

时间:2019-05-16 07:25:58

标签: sql presto sql-function

在ETL过程中,我收到一个varchar字段,并且(值的)长度在行与行之间更改。 我需要从字符串的右边保留5个符号。 这意味着我需要切割左侧,但由于长度未知,所以不能切割。

我尝试过select substring('24:15:11',4, 5),但是对我没有帮助,字符串可能是'2019-05-01 22:15:11'

sql:

select substring('24:15:11',4, 5)

预期:

15:11

3 个答案:

答案 0 :(得分:5)

您可以使用substr。负的起始位置被解释为相对于字符串的结尾。

select substr('24:15:11', -5)

答案 1 :(得分:3)

您可以使用length()确定substr()的第二个参数:

select substr('24:15:11', length('24:15:11') - 4, 5)

或简单地:

select substr('24:15:11', length('24:15:11') - 4)

了解preosto的string functions

答案 2 :(得分:-1)

SELECT RIGHT('2019-05-01 22:15:11', 5) AS ExtractString;

这将提供预期的输出