php - Mysql 将一列拆分为两个值(数字)并在它们之间进行搜索

标签 php mysql mysqli string-split

嗨,我在 mysql 中遇到了这个问题,我的表如下所示


  id        years

  1       1985-1996
  2       1990-2000

now I will receive a submitted value(yeaer between two,ex 1990) I have to split years into two parts like 1985 as initVal and 1996 endVal

I tried a few things which did not work for me

SELECT * FROM cip_finder WHERE model =33 AND('1986' BETWEEN if(locate('_',years)=0,'',SUBSTRING_INDEX(years, '_', 1)) AND if(locate('_',years)=0,'',SUBSTRING_INDEX(years, '_', 1)))


SELECT *,SPLIT_STR(years, '-', 1) AS initVAL,SPLIT_STR(years, '-', 2) AS endVal FROM cpc_finder WHERE model =33 AND('1986' BETWEEN initVal AND endVal)

有什么解决办法吗

最佳答案

同意 Alma Do 的评论...您需要将年份列标准化为两个。

尽管如果您仍然无法做到这一点,请使用下面的查询,您将获得预期的输出:

SELECT id, SUBSTRING_INDEX( years , '-', 1) AS initVal, 
REPLACE(years,CONCAT(SUBSTRING_INDEX( years , '-', 1),'-'),'') AS endVal 
FROM cip_finder;

希望对您有所帮助!

关于php - Mysql 将一列拆分为两个值(数字)并在它们之间进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24908017/

相关文章:

php - 我如何使用 CakePHP 第三方库函数?

php - 使用 WHERE CLAUSE 搜索从 A 日期到 B 日期的数据

javascript - 在更多输入字段中设置值

javascript - 如果记录已经存在或者如果它在 PDO MySQL 插入查询中不存在,我如何生成 javascript 警报?

Mysql - 默认情况下将行计数到定义的值并对它们进行分组

php - 计算评级系统的平均值

php - 在 Google App Engine 中连接到 Google Cloud SQL

php - 使用复选框更新数据库列

php - 加入在用户名 INSERT POST 中生成唯一 ID

php - 我不能在我的 ubuntu 服务器中使用 MySQLi。 mysqli_fetch_all() 没有定义?