使用 SUBSTR 分隔 SQLite 中的值
using SUBSTR to separate value in SQLite
我的数据库中有一列(此处称为 column1),其数据格式如下:“x/y/z”。我想创建一个只有 x 值的新列,我试过这个:
ALTER TABLE RECORDS
ADD COLUMN name_x TEXT;
SELECT column1, SUBSTR('column1','/',1) AS new_column FROM table;
新列不包含任何数据,而我希望每一行都有 x。
函数的第2个参数SUBSTR()
是你想要return的子字符串的起始位置(在本例中是1),第3个参数是字符数returned.
因此,对于第二个参数,您必须使用函数 INSTR()
来定位 '/'
:
SUBSTR(course_id, 1, INSTR(course_id, '/') - 1)
如果您已经创建了新列 institution
,那么您必须更新 table 以填充新列:
UPDATE records
SET institution = SUBSTR(course_id, 1, INSTR(course_id, '/') - 1)
如果您的 SQLite 版本是 3.31+,您可以将新列创建为 generated column,如下所示:
ALTER TABLE records ADD COLUMN institution TEXT
GENERATED ALWAYS AS (SUBSTR(course_id, 1, INSTR(course_id, '/') - 1));
我的数据库中有一列(此处称为 column1),其数据格式如下:“x/y/z”。我想创建一个只有 x 值的新列,我试过这个:
ALTER TABLE RECORDS
ADD COLUMN name_x TEXT;
SELECT column1, SUBSTR('column1','/',1) AS new_column FROM table;
新列不包含任何数据,而我希望每一行都有 x。
函数的第2个参数SUBSTR()
是你想要return的子字符串的起始位置(在本例中是1),第3个参数是字符数returned.
因此,对于第二个参数,您必须使用函数 INSTR()
来定位 '/'
:
SUBSTR(course_id, 1, INSTR(course_id, '/') - 1)
如果您已经创建了新列 institution
,那么您必须更新 table 以填充新列:
UPDATE records
SET institution = SUBSTR(course_id, 1, INSTR(course_id, '/') - 1)
如果您的 SQLite 版本是 3.31+,您可以将新列创建为 generated column,如下所示:
ALTER TABLE records ADD COLUMN institution TEXT
GENERATED ALWAYS AS (SUBSTR(course_id, 1, INSTR(course_id, '/') - 1));