sqlite instr函数在某些情况下不起作用

问题描述 投票:0回答:1

在Sqlite中,我们有table1,列column1有4行,其中列为column1

(p1,p10,p11,p20)

DROP TABLE IF EXISTS table1;
CREATE TABLE table1(column1 NVARCHAR);
INSERT INTO table1 (column1) values ('p1'),('p10'),('p11'),('p20');
Select instr(',p112,p108,p124,p204,p11,p1124,p1,p10,p20,',','+column1+',') from table1;

我们必须得到给定字符串中column1的每个值的位置: ,P112,P108,P124,P204,P11,P1124,P1,P10,P20,

查询

Select instr(',p112,p108,p124,p204,p11,p1124,p1,p10,p20,',column1) from table1;

返回值(2,7,2,17)

这不是我们想要的

查询

Select instr(',p112,p108,p124,p204,p11,p1124,p1,p10,p20,',','+column1+',') from table1;

所有行都返回9 - 事实证明它是第一个“0”符号的位置???

那么我们可以在sqlite的给定字符串中获取column1的确切位置?

string sqlite position
1个回答
2
投票

在SQLite中,连接运算符是||而不是+(如SQL Server),所以这样做:

Select instr(',p112,p108,p124,p204,p11,p1124,p1,p10,p20,',',' || column1 || ',') from table1;

您对代码所做的是添加到0的数字,因为没有一个字符串操作数可以成功转换为数字, 所以instr()正在寻找'0'并发现它始终位于字符串9的位置:',p112,p108,p124,p204,p11,p1124,p1,p10,p20,'

© www.soinside.com 2019 - 2024. All rights reserved.