我需要使用数据库中的特定字符创建自定义查询

时间:2010-09-22 14:16:44

标签: php mysql

我所拥有的是一个基于分部的相当大的航班号数据库。航班号输入如下:例如:CCC-NOC001,其号码分解如下CCC航空公司代码NOC分区代码和001实际航班号。

现在我正在尝试创建一个过滤器,根据分区代码从计划中选择航班号。现在澄清航班号输入数据库的方式是2个字段,第一个是代码,总是作为CCC输入,航班号是NOC001等。

因此,如果可能的话,我需要从号码的末尾删除数字,以便搜索的所有内容都是NOC或其他一个分区代码,目前有9个单独的分区。我希望能够过滤查询,以便从下拉列表中选择NOC,然后只有带有NOC的航班号将显示在表格中。

CCC-NOC001 CCC-NOC002 .... 非常感谢您给予我的任何帮助

3 个答案:

答案 0 :(得分:3)

只是一个建议:为什么你不为所有部分使用不同的mysql列 - 最终结果将简单地连接,你不会有任何麻烦。 MySQL没有 preg_replace ...... 最诚挚的问候。

答案 1 :(得分:2)

$dbh = new PDO($dsn, $user, $password);
$query = "select * from [TableName] where [ColumnName] like '%NOC%'";
$stmt = $dbh->prepare($query);
$stmt->execute();
if ($stmt->rowCount() > 0) {  
   $resultset = $stmt->fetchAll(PDO::FETCH_ASSOC);
   foreach ($resultset as $row) {
       $flight = $row['ColumnName'];
       $flightNum = str_replace('CCC-NOC', '', $flight);
   }
}

答案 2 :(得分:2)

您可以在SQL查询中使用REGEXP

SELECT * FROM [Table] WHERE [flighNumber] REGEXP '.{3}-[selected NOC]\d{3}'

。{3}用于代码(CCC),将[selected NOC]替换为用户选择的那个,\ d {3}用于最后三位代码(001,002等)。