【问题标题】:How to get SQLite Column Default Value to not include string quotes如何让 SQLite 列默认值不包含字符串引号
【发布时间】:2020-05-09 07:59:45
【问题描述】:

我正在尝试为 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(以及我熟悉的所有其他 SQL 数据库)默认情况下将所有字符串数据放在引号中。
  • 请通过填写您的表格(通过显示insert ... 的一些行)升级到minimal reproducible example,显示带有描述结果的查询(select ...)以及它产生的输出。理想情况下,填充几行会引发您描述的问题的所有变体。或者,您可能需要创建多个表才能这样做... (meta.stackoverflow.com/questions/333952/…)
  • 考虑在代码中使用换行符,只是为了方便阅读。

标签: sqlite


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-10-22
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 2021-08-03
    相关资源
    最近更新 更多