带有concat和子字符串的SQL联接



所以我正在尝试执行一个需要CONCAT和SUBSTRING的联接。

表一有一列带有日期和位置,例如"02:00 IND">

表二有一列的日期/时间为"2020-10-10 02:00:00.00000000",另一列的位置为"IND"。

这是我正在尝试但不起作用的声明:

SELECT * 
FROM FIRST_TABLE
INNER JOIN SECOND_TABLE on FIRST_TABLE.TIME_LOCATION = 
CONCAT(SUBSTRING(SECOND_TABLE.TIME,12,5) , SECOND_TABLE.LOCATION); 

我收到以下错误:

函数的参数1SUBSTRING无效。原因…..:数据类型、长度或值指定的函数SUBSTRING的参数1的无效。恢复..:请参阅有关详细信息,请参阅IBM i信息中心中的数据库类别关于标量函数。更正为函数指定的参数。重试请求

连接子字符串时将没有空间。

它看起来是这样的:

02:00结束

我猜它只是返回一个空白结果,因为你没有提到它返回了一个错误:(

如果有人遇到类似的问题,我会让它发挥作用。我是SQL的初学者,所以我不知道这是否有帮助,我相信有更好的方法。

无论如何,我的问题是数据类型不兼容。我将时间戳转换为时间,这给我留下了"HH.MM.SS"格式。在那之后,我不得不将其转换为NVARCHAR,以生成一个排除秒的子字符串。然后我不得不替换"。"使用":"使值匹配。这是一项艰巨的工作,但我发现了!

SELECT * 
FROM FIRST_TABLE
INNER JOIN SECOND_TABLE on FIRST_TABLE.TIME_LOCATION = 
CONCAT(CONCAT(REPLACE(SUBSTRING(CAST(TIME(SECOND_TABLE.TIME)AS NVARCHAR(8)), 1, 5), 
'.', ':'), ' '), DSP134.LSDTID); 

最新更新