是否可以根據值是數字還是文本來過濾SQL中的 SQLite 列值?我已經看到CAST了為此目的使用的參考資料。但是,它似乎沒有用,因為它SELECT CAST('1a' AS NUMERIC)通過了對數字型別的檢查。
uj5u.com熱心網友回復:
typeof() SQL函式被指定用于型別檢查。但是,其結果取決于列型別定義(根據官方檔案)和插入期間使用的格式。例如,當將數字作為文本文字插入 NUMERIC 列時,如果可能,它將轉換為數字,如果未發生轉換, typeof()將回傳適當的數字型別或文本。另一方面,TEXT 列將所有數字文字存盤為文本。BLOB 列存盤文本和數字文字而無需解釋。因此,混合型別的列可能應該宣告為 BLOB 或 NUMERIC(取決于是否需要將文本文字轉換為數字,如果可能的話)。考慮到這種行為,typeof()非常適合型別檢查。
uj5u.com熱心網友回復:
這只是一個想法:
SELECT [FilterColumn] FROM [Table] WHERE [FilterColumn]='0' OR (ceiling(log([FilterColumn],10)) =LENGTH([FilterColumn]) AND CAST([FilterColumn] AS INTEGER)>0)
這適用于位數=的整數log([FilterColumn],10)。區分單個字母從強制轉換為 0,[FilterColumn]='0' OR [FilterColumn]>0包括。
我想還有更優雅的解決方案
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/525577.html
標籤:sqlsqlite
上一篇:在SQLite中索引混合型別的列
