【问题标题】:SQLite - display table names finishing by "_1"SQLite - 显示以“_1”结尾的表名
【发布时间】:2018-01-16 09:59:14
【问题描述】:

我正在寻找一种方法来显示我在名称以“_1”结尾的数据库中拥有的表名。

我尝试使用命令:

.tables '%_1';

不幸的是,在表达式匹配中使用了下划线符号,因此它返回了我的表,例如: “125_1”、“125_11”、“125_21”。
在这个例子中只有第一个是有趣的,我不会显示完整的结果,因为有数百个表。所以我尝试了这样的事情:

.tables '%_1' ESCAPE '_';

它给了我完全相同的结果。 如果您有解决下划线符号问题的解决方案,请发布。 请记住,我在正则表达式中有数百个名称遵循此模式的表:“^\d+_\d+$”

【问题讨论】:

  • 那是一个可怕的桌子设计。你真的应该考虑重新设计整个东西。
  • 这可能很糟糕,但它是一种有效的方法,请查看此帖子:stackoverflow.com/questions/3694276/… 如果您有更好的想法,请随时发布:原则上表包含来自 2 个不同的数据一系列数字。所以我只写了表名_。你会怎么做呢?谢谢。

标签: regex sqlite sql-like


【解决方案1】:

ESCAPE clause 不是这样工作的。要搜索下划线,您必须使用转义字符转义下划线:

LIKE '%#_1' ESCAPE '#'

无论如何,.tables 不是 SQL 命令,它会忽略 ESCAPE 子句。要进行自己的搜索,您必须运行自己的查询:

SELECT name
FROM sqlite_master
WHERE type = 'table'
  AND name LIKE '%#_1' ESCAPE '#';

【讨论】:

  • 完美!现在让我们说,我想在一个命令中显示所有这些表的内容我应该怎么做?
  • 要提问,请使用“”按钮。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 2017-02-07
  • 1970-01-01
  • 2013-10-29
  • 2015-08-15
  • 2017-08-04
相关资源
最近更新 更多