我有一个 SQLite (v3.8.7.1 2014-10-29) 数据库,其中包含一个包含本地安装软件包名称的表,包括版本详细信息、安装日期、软件主页 URL 等。
现在问题出现了,其中一个包(CPAN 模块“版本”)恰好与表列之一具有相同的名称,即“版本”。
在表“包”的最简单的测试用例中
姓名 | 版本 |
---|---|
删除 | 2.2.5 |
代替 | 1.2.5 |
搜索 | 3.1 |
版本 | 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”,希望它永远不会与可能的包名称字符串发生冲突?