我所拥有的是一个基于分部的相当大的航班号数据库。航班号输入如下:例如:CCC-NOC001,其号码分解如下CCC航空公司代码NOC分区代码和001实际航班号。
现在我正在尝试创建一个过滤器,根据分区代码从计划中选择航班号。现在澄清航班号输入数据库的方式是2个字段,第一个是代码,总是作为CCC输入,航班号是NOC001等。
因此,如果可能的话,我需要从号码的末尾删除数字,以便搜索的所有内容都是NOC或其他一个分区代码,目前有9个单独的分区。我希望能够过滤查询,以便从下拉列表中选择NOC,然后只有带有NOC的航班号将显示在表格中。
CCC-NOC001 CCC-NOC002 .... 非常感谢您给予我的任何帮助
答案 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等)。