在我的数据库中,一个表包含两列,每列包含一个8位ASCII码,通常它只是字母数字。例如,一行可能包含col1中的A123B45C
和col2中的PQ2R4680
。
我需要一个查询/视图,输出一个4字符的字符串,计算为这些字符串的第二个+第三个字符串联。因此,在此示例中,额外列值为12Q2
。
这是我想要使用的SQL的简化版本,尽管它因为零剥离/转换而无法正常工作:
select
*,
(substr(col1, 2, 2) || substr(col2, 2, 2)) AS mode
from (nested SQL source query)
where (conditions)
此操作失败,因为如果一行包含col1中的A00B23B4
和col2中的P32R4680
,则它将评估为0032
,查询输出将包含数字32
而不是{{ 1}}。 (如果col1包含0032
或" 1.23456"或类似的东西,那就更糟了)
有关在Sqlite中防止零剥离和字符串到整数转换的其他问题,都与表中可以定义列文本关联或静态(可引用)数据的数据有关。在这种情况下,我无法做这些事情。我也只能创建查询,而不能创建表,所以我无法写入临时表。
确保在所有情况下获得4个字符输出的最佳方法是什么?
答案 0 :(得分:1)
我认为您的问题不在于.html
剥离字符,因为这可以按预期工作,例如: -
然后运行查询index.html
结果(如预期的那样): -
相反,您的问题很可能是您随后如何使用substr
,在这种情况下您可能需要使用CAST表达式CAST expressions
例如,以下内容可能会发生: -
SELECT substr(col1,2,2) || substr(col2,2,2) as mode FROM stripping
导致: -