首页 > 解决方案 > 如何让 SQLite 列默认值不包含字符串引号

问题描述

我正在尝试为 SQLite 中的某些列输入默认值。如果我使用单引号将字符串括起来,它将包含引号。不包含引号的唯一方法是不使用引号,但是如果字符串包含任何特殊字符或空格,则将不起作用。

我尝试使用的示例语句将采用以下形式:

CREATE TABLE tablename (id INTEGER NOT NULL, [columnname] TEXT DEFAULT DefValue, PRIMARY KEY (id))

如果 DefValue 是 John,那么它可以正常工作,并且当在表中生成默认值时,它没有封闭的引号或括号。如果我使用 'John'、"John"、[John]、'John Smith' 或像 'F!@#4%' 之类的特殊字符,则默认值是用封闭的引号/括号产生的。如果我不使用括号/引号,并且按预期存在特殊字符,则查询将不起作用。

有没有办法添加带有空格或特殊字符的默认值并且不会产生封闭引号?

标签: sqlite

解决方案


我弄清楚了这个问题。它不是 SQLite。我将尝试简要解释一下。我使用 SQLite 作为 .NET 程序的本地数据库。我最初认为它与 .NET 程序无关,因为我认为我在最近开始尝试的 SQLite 编辑器中重现了这个问题。发布后我意识到它没有在 SQLite 编辑器中复制。已经很晚了,我又累又沮丧。主要问题是在 .NET 程序中,当使用 dataadapter.fillschema 方法时,datadapter 不会提取默认值,所以我有一个子例程通过 SELECT 查询从 SQLite 中提取默认值,并且 .NET 为数据列添加了默认值. 我没有意识到它正在返回包含字符串文字的单引号(即'John Smith'周围的引号)。


推荐阅读