java – 我需要一个SQL查询来查找您可以使用一组字母创建的所有单词,包括最多两个空白区块
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 我需要一个SQL查询来查找您可以使用一组字母创建的所有单词,包括最多两个空白区块,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4579字,纯文字阅读大概需要7分钟。
内容图文
![java – 我需要一个SQL查询来查找您可以使用一组字母创建的所有单词,包括最多两个空白区块](/upload/InfoBanner/zyjiaocheng/904/02ac2c5bd4ab4c14ba33c4faccdb86ad.jpg)
我有一个名为dictionary的数据库表,目前包含所有字典条目的以下字段:
public static final String COLUMN_NAME_UID = "_id_";
public static final String COLUMN_NAME_WORD = "word";
public static final String COLUMN_NAME_WORD = "wordSorted";
public static final String COLUMN_NAME_WORD_LENGTH = "length";
public static final String COLUMN_NAME_COUNT_A = "count_A";
public static final String COLUMN_NAME_COUNT_B = "count_B";
public static final String COLUMN_NAME_COUNT_C = "count_C";
public static final String COLUMN_NAME_COUNT_D = "count_D";
public static final String COLUMN_NAME_COUNT_E = "count_E";
public static final String COLUMN_NAME_COUNT_F = "count_F";
public static final String COLUMN_NAME_COUNT_G = "count_G";
public static final String COLUMN_NAME_COUNT_H = "count_H";
public static final String COLUMN_NAME_COUNT_I = "count_I";
public static final String COLUMN_NAME_COUNT_J = "count_J";
public static final String COLUMN_NAME_COUNT_K = "count_K";
public static final String COLUMN_NAME_COUNT_L = "count_L";
public static final String COLUMN_NAME_COUNT_M = "count_M";
public static final String COLUMN_NAME_COUNT_N = "count_N";
public static final String COLUMN_NAME_COUNT_O = "count_O";
public static final String COLUMN_NAME_COUNT_P = "count_P";
public static final String COLUMN_NAME_COUNT_Q = "count_Q";
public static final String COLUMN_NAME_COUNT_R = "count_R";
public static final String COLUMN_NAME_COUNT_S = "count_S";
public static final String COLUMN_NAME_COUNT_T = "count_T";
public static final String COLUMN_NAME_COUNT_U = "count_U";
public static final String COLUMN_NAME_COUNT_V = "count_V";
public static final String COLUMN_NAME_COUNT_W = "count_W";
public static final String COLUMN_NAME_COUNT_X = "count_X";
public static final String COLUMN_NAME_COUNT_Y = "count_Y";
public static final String COLUMN_NAME_COUNT_Z = "count_Z";
我希望能够搜索实例test *并找到所有可以用“t”“e”“s”“t”和一个通配符生成的单词,例如像“tests”这样的单词(s是通配符) ,“setts”(s是通配符),“set”,“tet”“es”“te”,“best”(b是通配符)等等……任何你可以用这些字母的任意组合制作的东西.
我尝试过这样的方法,但这个例子只找到没有通配符的四个字母的单词:
SELECT * FROM dictionary WHERE
count_E=1 AND
count_S=1 AND
count_T=2
SELECT * FROM dictionary WHERE length <=4
这会产生:
"137075" "sett" "estt"
"145808" "stet" "estt"
"153675" "test" "estt"
"153851" "tets" "estt"
现在,我知道,这是一个重要的数学问题.
这是我如何获得所有5个字母的单词,其中包含一个空格和上一个查询中提供的所有字母:
SELECT * FROM dictionary WHERE
count_E=1 AND
count_S=1 AND
count_T=2
INTERSECT
SELECT * FROM dictionary WHERE length <=5
结果:
"97705" "netts" "enstt"
"137075" "sett" "estt"
"145250" "state" "aestt"
"145808" "stet" "estt"
"152303" "taste" "aestt"
"152333" "tates" "aestt"
"152632" "teats" "aestt"
"153361" "tents" "enstt"
"153675" "test" "estt"
"153676" "testa" "aestt"
"153733" "testy" "estty"
"153769" "teths" "ehstt"
"153851" "tets" "estt"
"153874" "texts" "esttx"
"156575" "totes" "eostt"
"157952" "trets" "erstt"
"172060" "yetts" "estty"
但是,我必须经历所有迭代的字母组合才能获得所有隐藏的子词……任何人都可以帮我想一个更优雅的方法来查询查询中的字谜和子词两个通配符?我也知道你可以在SQL中使用REGEXP,这可能是一种方式.我不知道在这一点上,我把这个问题带到了蜂巢……
是否有查询,或一系列查询,交叉点,联接等…这有助于我解决这个问题?
UPDATE
我想我可能偶然发现了这一点,但我不确定它是否正常工作.任何帮助,将不胜感激:
SELECT * FROM dictionary WHERE
(
count_E<=1 AND
count_S<=1 AND
count_T<=1
)
INTERSECT SELECT * FROM dictionary WHERE length =(count_E+count_S+count_T+1) ORDER BY length
1是占一个空白区域.对于两个人,我正在考虑做一个2等等… 0就是那些字母,以及你可以用它们制作的任何东西.
解决方法:
您必须执行以下操作,将表的所有字段连接在一起,如下所示:
concatenacion = "(_id||' '||Desc_art||' '||Nom_proveedor||' '||marca) like '"+resultado+"'" +
"OR (_id||' '||Nom_proveedor||' '||marca||' '||Desc_art) like '"+resultado+"'" +
"OR (marca||' '||Nom_proveedor||' '||Desc_art||' '||_id) like '"+resultado+"'" +
"OR (marca||' '||Nom_proveedor||' '||_id||' '||Desc_art) like '"+resultado+"'" +
"OR (Desc_art||' '||Nom_proveedor||' '||marca||' '||_id) like '"+resultado+"'" +
"OR (Desc_art||' '||_id||' '||Nom_proveedor||' '||marca) like '"+resultado+"'";
然后提出你的请求,并在WHERE子句中必须以你的conecatenacion为例:
cursor=bd.rawQuery("select _id, Desc_art, cant_art, Desc_bulto, precio"+getDefaultNroLista(codcliente)+", tiene_imagen,marca from listas_precios where "+concatenacion+" ORDER BY Desc_art ASC", null);
我为我工作得很好,希望它有用
内容总结
以上是互联网集市为您收集整理的java – 我需要一个SQL查询来查找您可以使用一组字母创建的所有单词,包括最多两个空白区块全部内容,希望文章能够帮你解决java – 我需要一个SQL查询来查找您可以使用一组字母创建的所有单词,包括最多两个空白区块所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。