1
我有一個包含本地安裝的軟件包名稱的Sqlite3(v3.8.7.1 2014-10-29)數據庫,其中包含版本,安裝日期,軟件主頁URL等的名稱。Sqlite的選擇與字符串相等的價值是否與列名相同?
現在問題出現了,其中一個軟件包(CPAN模塊「版本」)碰巧與表列中的一個具有相同的名稱,即「版本」。
在最簡單的測試案例一表「包」
name | version
----------+-----------
delete | 2.2.5
replace | 1.2.5
search | 3.1
version | 0.2.3
echo 'SELECT * FROM Packages where name = "replace" ;' | sqlite3 Test.db
replace|1.2.5
echo 'SELECT * FROM Packages WHERE name = "search" ;' | sqlite3 Test.db
search|3.1
而是試圖檢索名爲「版本」
echo 'SELECT * FROM Packages WHERE name = "version" ;' | sqlite3 Test.db
沒有包裝的條目時返回,因爲可能它正嘗試將名稱與「版本」列中的值進行比較。
有沒有一種方法來強制字面字符串比較,或者是唯一的解決方案,這樣的問題是將列從「版本」重命名爲別的,比如「package_version」,希望永遠不會與可能發生衝突包名字符串?