2015-06-04 71 views
1

我使用SQL數據庫瀏覽器版本3.6.0; SQLite版本3.8.9。 此應用程序已支持正常表達開箱(sqlitebrowser)。我可以在列brand上使用regexp,但在列revision上失敗;SQLite數據庫瀏覽器:正則表達式的無效操作數

例如

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

品牌和修訂的文本型。該表的創建模式是如下:

沒有它們是不同的看到你的表的描述,如果你正確地改變TEXTvarchar它將很好地工作。

或者我會檢查並通知您如何使用regex或者我們可以使用regexTEXT數據類型。

,或者你可以轉換(CAST)的TEXT爲varchar和可以執行的匹配操作

看到這個職位對於如何投放文本VARCHAR Need to convert Text field to Varchar temporarily so that I can pass to a stored procedure

0

brandrevision之間的區別是,brand不能接受NULL文字。我填的是revision經過與空字符串 '':

UPDATE TDevice SET revision='' WHERE revision IS NULL 

,這invalid operand錯誤得到解決。