在Sqlite中,我们具有带有列column1的table1 有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的确切位置?
答案 0 :(得分: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,'
。