我有一个相当大的基于分区的航班号数据库。航班号输入如下: CCC-NOC001,其中航班号按以下顺序分解: CCC航空公司代码、NOC部门代码和001实际航班号。
现在,我正在尝试创建一个过滤器,它将根据部门代码从时间表中选择航班号。现在,为了澄清在数据库中输入航班号的方式,有两个字段,第一个字段是代码,始终输入为CCC,而航班号将输入为NOC001等。
因此,如果可能的话,我需要的是从航班号的末尾剥离数字,以便搜索的只有NOC或其他部门代码之一,目前有9个独立的部门。我希望能够过滤查询,这样,如果从下拉列表中选择NOC,那么表中将只显示带有NOC的航班号。
CCC-NOC001 CCC-NOC002....如果您能给我任何帮助,我们将不胜感激。
发布于 2010-09-22 23:20:09
$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);
}
}发布于 2010-09-22 22:31:18
只是一个建议:为什么你不对所有部分使用不同的mysql列--最终的结果将是简单的拼接,你不会有任何麻烦。MySQL没有preg_replace...诚挚的问候。
发布于 2010-09-22 23:32:16
可以在SQL查询中使用REGEXP
SELECT * FROM [Table] WHERE [flighNumber] REGEXP '.{3}-[selected NOC]\d{3}'.{3}用于编码(CCC),用用户选择的NOC替换选定的NOC,\d{3}用于最后三位编码(001,002等)。
https://stackoverflow.com/questions/3770142
复制相似问题