2011-03-24 14 views
1

我需要从哪里在OPTION_NAME列中的值开始以前缀“MY_”正则表达式来选择从一个数据库相匹配的预定义的文本前缀记录

数据库表抓取所有的记录和存储查询的结果在由option_name,option_value对组成的数组中?

我需要的数据库列称为“option_name”和“option_value”。

我将使用该数组在for循环中执行一些进一步的处理。

我猜这将需要SQL语句中的一个正则表达式,其中的option_name值匹配目标前缀的记录。

回答

4

对于SQL语句组成部分,只要使用like用%通配符:

select * from YourTable where option_name like 'my|_%' escape '|' 

由于_也是你要逃避它通配符。

有足够的资源来读取PHP中的SQL查询结果:here's one

+1

+1用于获取鲜为人知的“ESCAPE”条款适用于便携性。反斜杠转义是MySQL中的默认值,但不是ANSI SQL标准的一部分。 – bobince 2011-03-24 21:57:54

+1

+1 @Andomar:谢谢你的回答。并供参考。 – 2011-03-25 01:42:50

2

如果使用一个简单的模式,如 “开头”,你可以使用LIKE操作:

select * 
from your_table 
where option_name like 'my\_%'; 


注:

  • %意味着“任何字符,任何次数“
  • _意味着“任意字符,一周时间” - 所以,如果你想搜索文字'_',你有一个\逃脱它


只是为了信息,如果你需要测试用正则表达式匹配,你会想看看手册的Regular Expressions部分。
但这不是必要的,在这里:like正常工作开始于

+0

+1为逃生 – Andomar 2011-03-24 21:55:53

0
$query = mysql_query("SELECT option_name, option_value FROM table WHERE option_name like 'my_%'"); 

while($result = mysql_fetch_array($query)){ 
$array = array("name" => $result['name'],"value" => $result['value']); 
} 
相关问题