SQL Query根据描述查找行

时间:2016-02-25 12:24:07

标签: mysql sql

我在MySQL中运行此查询:

obj.getString("message")

我的行SELECT sequence from prices WHERE match_description <> '' AND 'SIP Trunk: 123456 (1 Channel)' LIKE CONCAT(match_description, '%') ORDER BY length(match_description) desc LIMIT 1; 为:

match_description

等...

运行上述查询时,字符串看起来像SIP Trunk (1 Channel) SIP Trunk (2 Channels) SIP Trunk (3 Channels)

如何正确匹配这些行?

请记住,查询我已经使用其他字符串,因此我无法更改它。

例如,

运行的其他查询如下:

SIP Trunk: 123456 (x Channels)

这会匹配SELECT sequence from prices WHERE match_description <> '' AND 'Seat 200' LIKE CONCAT(match_description, '%') ORDER BY length(match_description) desc LIMIT 1; match_description

的行

我上传CSV文件时会运行查询。这包括提供给我的产品名称,以便在发送给我时上传。

一些示例行将是:

Seat

因此,使用我的查询,我能够匹配除最后两个之外的所有。

对于我可以匹配的那些,我在表格Seat 200 Seat 201 Seat 202 Call Queue 200 Call Group 201 Geographic Number 01234 567890 SIP Trunk: 123456 (2 Channels) SIP Trunk: 654321 (5 Channels) 中有以下内容:

match_description

我只是不确定如何匹配这些? (每种产品的123456和654321不同)

Seat
Seat
Seat
Call Queue
Call Group
Geographic Number

3 个答案:

答案 0 :(得分:1)

您可以将前11个字符与SIP Trunk:匹配,然后将最后9/10个字符与channel)channels)相匹配,如果您的match_description形式为:{{ 1}}它会捡起来的。 SIP Trunk: yyyyyy (x Channels)语句将确保MIDx为整数,并且开头括号就在那里。

另外,感谢@dwjv指出你无法在match_description列上编入索引。

yyyyyy

答案 1 :(得分:1)

尝试这样的事情

<input id="full-screen-toggler" type="checkbox" style="display: none;" />
<div id="youreditor">
  <label id="fslabel" onclick="" for="full-screen-toggler" />
</div>

答案 2 :(得分:0)

您可以更改字符串以匹配您的match_description 例如,您可以将SIP中继12345(x信道)编码为SIP中继(x信道)12345

这样你的值就会与字符串匹配。

SIP Trunk (1 Channel)
SIP Trunk (2 Channels)
SIP Trunk (3 Channels)

出于编码目的,您可以在变量上使用case语句,该变量为您提供特定类型的字符串。

您是否需要首先匹配SIP中继:(x频道)或SIP中继:(x频道),然后编号123456.您可以通过在查询中或在您的csv中执行某些字符串操作来忽略123456部分#39; t需要它。