给定一个字符串,找到一个字符串开始的行开始

问题描述:

我在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

如何

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

我已经尝试,但它不工作,因为它不是$测试谁需要通配符,但我的行从SQL ... – Pierro06

我认为这是表达你想要的:

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