Sql 从数据库中存储的具有完整路径的文件名中查找确切的文件名
我需要通过对包含file_name列的表执行SQL查询来找到确切的文件名。在file_name列中,文件的完整路径存储为D:/Workspace/app.js 我可以通过查询找到app.jsSql 从数据库中存储的具有完整路径的文件名中查找确切的文件名,sql,Sql,我需要通过对包含file_name列的表执行SQL查询来找到确切的文件名。在file_name列中,文件的完整路径存储为D:/Workspace/app.js 我可以通过查询找到app.js SELECT * FROM details WHERE file_name LIKE '%app.js' 但问题是如果我像这样编写查询 SELECT * FROM details WHERE file_name LIKE '%p.js' 它还列出了app.js文件。所以,如果文件名是用复杂路径存
SELECT *
FROM details
WHERE file_name LIKE '%app.js'
但问题是如果我像这样编写查询
SELECT *
FROM details
WHERE file_name LIKE '%p.js'
它还列出了app.js文件。所以,如果文件名是用复杂路径存储的,任何人都可以指导我如何从数据库中获得文件名的精确匹配?
提前谢谢。这个怎么样
SELECT * FROM details WHERE file_name LIKE '%/app.js' OR file_name LIKE '%\app.js'
“%”符号用于定义模式前后的通配符(缺少字母)。所以你永远也找不到%app.js
,因为感谢你们大家,没有xxxxapps.js
,
我得到了我想要的结果
sql = "SELECT * FROM details WHERE file_name RLIKE ?";
ps = conn.prepareStatement(sql);
ps.setString(1, "[[:<:]]"+fname+"[[:>:]]");
sql=“从文件名类似的详细信息中选择*”;
ps=连接准备状态(sql);
ps.setString(1,“[[::]]”;
这给出了fname Variable所包含的确切字符串。
从文件名“%/app.js”
等详细信息中选择*?使用%
时,您的意思是查找后缀为p.js
的所有列,因此没有解决方案。你可以给mysql更多的字符,以获得更少的数据。或者您可以使用ID
column查找元组。最后,您可以自己查找数据,在mysql
获取多行数据后,自己选择。@JB NIzet::我确实有一个包含文件名app.js的变量,我需要将数据库中的app.js与包含文件名的变量匹配,并对该文件执行操作。如果我使用您的方法,我需要在文件名之前的变量中添加“/”,但我不希望这样。Thanks@ammy:因此,假设fileName
是包含文件名(app.js)的变量,请使用String sqlParameterValue=“%/”+文件名代码>问题出在哪里?@JB Nizet:我使用了你建议的方法,但如果文件名是p.js,它也会对文件执行操作。我试图从数据库中检索,从文件名(如“%\p.js”)的详细信息中选择文件名:此查询列出了包含app.js的文件的路径没有用我确实在变量中有文件名,并且我必须与数据库中的文件匹配。问题是一些文件名是用forwared斜杠存储的(D:/Workspace/app.js)有些是反斜杠(D:\Workspace1\app.js)@ammy嘿,我更改了查询如果这是SQL Server,条件的两部分可以这样组合:。。。如果文件名像“%[\/]app.js”
。一定有办法,用正则表达式还是别的什么?