簡體   English   中英

MySQL查詢選擇全部或部分搜索字符串

[英]MySQL query to select all or portion of search string

我正在研究一個腳本,以搜索國際象棋的開局位置。

我需要構建一個查詢,該查詢將基於某些PGN代碼或PGN中移動范圍內的移動進行選擇。

例:

  1. 1.e4 2. e5
  2. 1.e4 2. e5 Nc6
  3. 1.e4 2. e5 Nc6 3. Bb5
  4. 1.e4 2. e5 Nc6 3. Bb5 a6
  5. 1.e4 2. e5 Nc6 3. Bb5 a6 4. Ba4 Nf6
  6. 1.e4 2. e5 Nc6 3. Bb5 a6 4. Ba4 Nf6 5.Nc3

現在,我想做的是在“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM