SQLite DB Browser:regexp的无效操作数

时间:2015-06-04 11:48:57

标签: regex sqlite

我使用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)
);

2 个答案:

答案 0 :(得分:0)

  

品牌和版本均为TEXT类型。表创建模式如下:

如果您将TEXT更改为varchar它可以正常工作,那么它们会有所不同,请参阅您的表格说明。

或者我会检查并告知您如何使用regex,或者我们可以将regexTEXT数据类型一起使用。

或者您可以将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)

revisionbrand之间的区别在于revision无法接受NULL文本。在我用空字符串''填充UPDATE TDevice SET revision='' WHERE revision IS NULL 后:

invalid operand

,此div错误已解决。