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



在 Sqlite 中,我们有带有列 1 的 table1 列 1 有 4 行,具有以下值

(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,'

最新更新