在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的确切位置?
在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,'
。