[英]MySQL query to select all or portion of search string
我正在研究一個腳本,以搜索國際象棋的開局位置。
我需要構建一個查詢,該查詢將基於某些PGN代碼或PGN中移動范圍內的移動進行選擇。
例:
現在,我想做的是在“ 1.e4 2. e5 Nc6 3. Bb5 a6”上進行搜索,並從上面獲取1-4行。
我知道LIKE電話,但是據我了解,它將選擇所有這些行。
抱歉,我沒有嘗試。 我不知道什么MySQL功能可以完成此任務。
在表中,每行都有一列VARCHAR(200),其中包含上面的行之一。
另外,如果有人知道MySQL dB旨在基於某些PGN搜索ECO代碼,請隨時發布鏈接。
假設您的表“ chess”的字段為“ moves” varchar(200),我使用以下查詢來設置測試數據:
create table chess (moves varchar(200));
insert into chess values ("1.e4 2. e5");
insert into chess values ("1.e4 2. e5 Nc6");
insert into chess values ("1.e4 2. e5 Nc6 3. Bb5");
insert into chess values ("1.e4 2. e5 Nc6 3. Bb5 a6");
insert into chess values ("1.e4 2. e5 Nc6 3. Bb5 a6 4. Ba4 Nf6");
insert into chess values ("1.e4 2. e5 Nc6 3. Bb5 a6 4. Ba4 Nf6 5.Nc3");
現在嘗試以下查詢:
SELECT moves FROM chess
WHERE "1.e4 2. e5 Nc6 3. Bb5 a6" LIKE concat(moves, "%");
注意類似的比較如何使用左側的常量和右側的實際字段。
與此相關的是,varchar(200)不夠用。 請考慮增加它或使用文本數據類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.