我使用DB Browser for SQLite 3.6.0版; SQLite版本3.8.9。
此应用程序已经支持正则表达式开箱即用(sqlitebrowser)。我可以在列regexp
上使用brand
,但在列revision
上失败;
例如
SELECT brand,revision FROM TDevice where TDevice.brand regexp '^ASUS$'
,结果为114 Rows returned from: SELECT brand,revision FROM TDevice WHERE TDevice.brand regexp '^ASUS$'; (took 51ms)
但是,如果regexp
应用于不同的列,那么我会收到错误
SELECT brand,revision FROM TDevice WHERE TDevice.revision regexp '^ASUS$';
,错误消息为invalid operand: SELECT brand,revision FROM TDevice WHERE TDevice.revision regexp '^ASUS$';
品牌和版本均为TEXT类型。表创建模式如下:
CREATE TABLE `TDevice` (
`id` INTEGER NOT NULL,
`brand` varchar(128) NOT NULL,
`model` varchar(128) NOT NULL,
`revision` TEXT,
PRIMARY KEY(id)
);
答案 0 :(得分:0)
品牌和版本均为TEXT类型。表创建模式如下:
如果您将TEXT
更改为varchar
它可以正常工作,那么它们会有所不同,请参阅您的表格说明。
或者我会检查并告知您如何使用regex
,或者我们可以将regex
与TEXT
数据类型一起使用。
或者您可以将TEXT
转换(CAST)为varchar并执行匹配操作
有关如何将TEAST CAST转换为varchar的信息,请参阅此文章 Need to convert Text field to Varchar temporarily so that I can pass to a stored procedure
答案 1 :(得分:0)
revision
和brand
之间的区别在于revision
无法接受NULL文本。在我用空字符串''填充UPDATE TDevice SET revision='' WHERE revision IS NULL
后:
invalid operand
,此div
错误已解决。