通过在 Sql 中使用表名中的特定单词检查表是不是存在
Posted
技术标签:
【中文标题】通过在 Sql 中使用表名中的特定单词检查表是不是存在【英文标题】:Checking If Table Is Exist By Using Specific Word From Table's Name In Sql通过在 Sql 中使用表名中的特定单词检查表是否存在 【发布时间】:2020-05-02 19:19:34 【问题描述】:我正在尝试通过从表名中搜索字母或单词来让我的程序检查表名是否存在...例如,我的表名是 (samAmerica) 和 (samGermany) 我希望程序检查如果有任何表名仅包含 (sam) 词.. 所以当我使用 sam 词搜索时,他会向我显示两个表...我知道如何让它检查所有内容,但这对我没有帮助,因为我会作为一个表有很多相同的名字但不同的昵称。
这是我的代码,用于检查所有表名。如果有人帮助我,我将不胜感激。
public boolean istableNameexist(String un)
boolean uexist = false;
Connection con = myConnection.getconnection();
PreparedStatement ps;
ResultSet rs;
try
ps = con.prepareStatement("SELECT * FROM information_schema.tables WHERE TABLE_NAME = ?");
ps.setString(1,name.getText()+faturanumarasi.getText());
rs = ps.executeQuery();
if (rs.next())
uexist = true;
catch (Exception e)
System.out.println("wrong");
return uexist;
【问题讨论】:
用like代替=。 执行查询 SELECT * FROM information_schema.tables WHERE TABLE_NAME = '你可以尝试使用like操作符
SELECT * FROM information_schema.tables WHERE TABLE_NAME LIKE concat('%',?,'%')
https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html
【讨论】:
当我使用所有单词 (samamerica) 时找到它,但当我使用单词 (sam) 时它没有找到任何想法 SELECT * FROM information_schema.tables WHERE TABLE_NAME LIKE 'samamerica' 这行得通,但 sam 一个人不行 你试过了吗:SELECT * FROM information_schema.tables WHERE TABLE_NAME LIKE '%sam%' 是的,我做到了,但它没有用,然后我尝试了 SELECT * FROM information_schema.tables WHERE TABLE_NAME LIKE 'sam%' .... 就像它检查单词的第一个字母一样,它成功了跨度> @abdullahaffoura 我已经用正确的方式更新了答案 .. 无论如何你可以在文档链接中看到模式 concat('%',?,'%') 或 concat('%', 'sam','%') 应该可以工作.. 因此,如果此查询失败,请更好地检查实际参数字符串或列值内容o以上是关于通过在 Sql 中使用表名中的特定单词检查表是不是存在的主要内容,如果未能解决你的问题,请参考以下文章
从 PHP 生成 SQL 时如何处理 SQL 表名中的特殊字符?
如何从Django模型中的数据库表名中删除后缀's',这是由Djanog自动添加的