在两者之间找到任何方式?

时间:2014-03-11 06:39:19

标签: php mysql

首先我需要说对不起,因为以前的系统/数据库设计将数据存储在组中,例如>>> A1 - A8(指第A行至第A行第8行)或B4 - B12(指行B第4至第B行第12号) 以字符串格式存储在数据库中。

例如

========================
= seat = condition =
========================
= A1 - A8 =好=
= B4 - B12 =坏=
========================

但现在系统改变了!! (一年后)并且需要逐一识别它们,这意味着现在用户输入A4,系统能够返回它的条件(好)或输入A20系统返回未找到

有没有办法(编码方或sql语句)在没有变更数据库设计的情况下满足这个新要求?因为如果在数据库方面进行更改,则需要更改存储数据的方式(还需要做更多的工作)

我希望你们明白我的问题。顺便说一下,我正在使用PHP和mySQL。

2 个答案:

答案 0 :(得分:0)

你必须用第一个字符提取行,例如'A'然后将'1'转换为'8'到一个范围(A1,A2 ...,A8)然后做一个in_array来查找它们是否存在在数组中。虽然似乎是非常复杂和昂贵的解决方案

答案 1 :(得分:0)

这是非常糟糕的数据库设计,你应该考虑改变。现在,逻辑将是这样的:

  1. 将用户输入分为字母和数字 - 让我们说user_seat_letteruser_seat_number
  2. 从表格中获取座位(以及Condition
  3. -
  4. 处分开
  5. 然后按字母和数字打破 - 让我们说row_seat_letter1row_seat_number1row_seat_letter2row_seat_number2
  6. i)如果user_seat_letterrow_seat_letter1不匹配,请抓取下一个 桌子上的座位
    ii)如果座位匹配,请检查是否匹配 user_seat_number等于row_seat_number1和之间row_seat_number2 a) If true, return the `Condition` of that row b) Else return 'Not Found'

    {{1}}

    iii)否则返回'未找到'