阻止SQLite查询从数字字符串中删除前导零?

时间:2018-01-03 14:48:22

标签: sqlite

在我的数据库中,一个表包含两列,每列包含一个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个字符输出的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我认为您的问题不在于.html剥离字符,因为这可以按预期工作,例如: -

enter image description here

然后运行查询index.html

结果(如预期的那样): -

enter image description here

相反,您的问题很可能是您随后如何使用substr,在这种情况下您可能需要使用CAST表达式CAST expressions

例如,以下内容可能会发生: -

SELECT  substr(col1,2,2) || substr(col2,2,2) as mode FROM stripping

导致: -

enter image description here