java– 我需要一个SQL查询来查找您可以使用一组字母创建的所有单词,包括最多两个空白区块

java– 我需要一个SQL查询来查找您可以使用一组字母创建的所有单词,包括最多两个空白区块,第1张

概述我有一个名为dictionary的数据库表,目前包含所有字典条目的以下字段:publicstaticfinalStringCOLUMN_NAME_UID="_id_";publicstaticfinalStringCOLUMN_NAME_WORD="word";publicstaticfinalStringCOLUMN_NAME_WORD="wordSorted";publicstaticfina

我有一个名为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 ANDcount_S=1 ANDcount_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 ANDcount_S=1 ANDcount_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 ANDcount_S<=1 ANDcount_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查询来查找您可以使用一组字母创建的所有单词,包括最多两个空白区块所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1118155.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存