2016-04-23 94 views
0

我在bash中得到了一個變量,例如test=CCA123給定一個字符串,找到一個字符串開始的行開始

假設我有一個名爲init的表,並在我的MySQL數據庫中有一列name。該表格包含以下值。

名稱:

  • CC
  • CCB
  • AA
  • AZ
  • 阿塞拜疆
  • AQS

鑑於這種,我想要一個SQL,選擇CC

所以,我想是這樣的:

mysql -u USER -pPASS -D DATABASE -e "SELECT name FROM intit WHERE $test LIKE name%` 

當然但是,這不工作!任何想法我怎麼能做到這一點?

+0

如果測試是CCB123,您想要哪一行?爲什麼? – Bohemian

回答

2

如何

"SELECT name FROM intit WHERE name LIKE \"$test%\"" 
+0

我已經嘗試,但它不工作,因爲它不是$測試誰需要通配符,但我的行從SQL ... – Pierro06

0

我認爲這是表達你想要的:

select name 
from init 
where '$test' like concat('test=', name, '%'); 

另外,如果你想使用索引和name始終是兩個或三個大字:

select name 
from init 
where name = left(substring_index('$test', '=', -1), 2) or 
     name = left(substring_index('$test', '=', -1), 3); 
+0

關於你的第一個選項我只是嘗試,但MySQL告訴我,'CCA123'不是專欄...我認爲where子句的第一部分需要成爲一個列.. – Pierro06

+0

而對於另一個,它對我來說並不完美,但是我試過了,沒有在$ test周圍的引用,他告訴我CCA123不是列,並且用引號,他告訴我有一個語法錯誤....(這與逃脫的雙引號和簡單的引號是一樣的) – Pierro06

+0

沒關係,我只是重試你的第二種方法,它的工作原理!非常感謝! – Pierro06

相關問題