Как сравнить поля в SQL запросе

Как сравнить поля в SQL запросе


Есть задача , сравнить два поля.
Выполнение условия
поле1 = 222
поле2 = 222
условие выполняет. Но нужно чтобы сравнение было по регулярному вырожению
поле1 = 222
поле2 = 222аа
вот тут и загвоздка .
на данном этапе использую такой запрос
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .mysql.geshi_code {font-family:monospace;} .mysql.geshi_code .imp {font-weight: bold; color: red;} .mysql.geshi_code .kw1 {color: #990099; font-weight: bold;} .mysql.geshi_code .kw2 {color: #990099; font-weight: bold;} .mysql.geshi_code .kw3 {color: #9900FF; font-weight: bold;} .mysql.geshi_code .kw4 {color: #999900; font-weight: bold;} .mysql.geshi_code .kw5 {color: #999900; font-weight: bold;} .mysql.geshi_code .kw6 {color: #FF9900; font-weight: bold;} .mysql.geshi_code .kw7 {color: #FF9900; font-weight: bold;} .mysql.geshi_code .kw8 {color: #9900FF; font-weight: bold;} .mysql.geshi_code .kw9 {color: #9900FF; font-weight: bold;} .mysql.geshi_code .kw10 {color: #CC0099; font-weight: bold;} .mysql.geshi_code .kw11 {color: #CC0099; font-weight: bold;} .mysql.geshi_code .kw12 {color: #009900;} .mysql.geshi_code .kw13 {color: #000099;} .mysql.geshi_code .kw14 {color: #000099;} .mysql.geshi_code .kw15 {color: #000099;} .mysql.geshi_code .kw16 {color: #000099;} .mysql.geshi_code .kw17 {color: #000099;} .mysql.geshi_code .kw18 {color: #000099;} .mysql.geshi_code .kw19 {color: #000099;} .mysql.geshi_code .kw20 {color: #000099;} .mysql.geshi_code .kw21 {color: #000099;} .mysql.geshi_code .kw22 {color: #000099;} .mysql.geshi_code .kw23 {color: #000099;} .mysql.geshi_code .kw24 {color: #000099;} .mysql.geshi_code .kw25 {color: #000099;} .mysql.geshi_code .kw26 {color: #000099;} .mysql.geshi_code .kw27 {color: #00CC00;} .mysql.geshi_code .coMULTI {color: #808000; font-style: italic;} .mysql.geshi_code .co1 {color: #808080; font-style: italic;} .mysql.geshi_code .co2 {color: #808080; font-style: italic;} .mysql.geshi_code .es0 {color: #004000; font-weight: bold;} .mysql.geshi_code .es1 {color: #008080; font-weight: bold;} .mysql.geshi_code .br0 {color: #FF00FF;} .mysql.geshi_code .sy1 {color: #CC0099;} .mysql.geshi_code .sy2 {color: #000033;} .mysql.geshi_code .st0 {color: #008000;} .mysql.geshi_code .nu0 {color: #008080;} .mysql.geshi_code span.xtra { display:block; }

SELECT id,model
FROM table as t1 WHERE  exists ( SELECT model FROM table WHERE model=t1.model)
 

Как сделать чтобы сравнение было по регулярному выражению?

1 ответов


Хм


SELECT  ...... FROM table
WHERE
 field1 LIKE CONCAT(field2,'%')

 

Все работает. Только что проверил на примере.

Если первое поле будет являться маской то можно попробовать следующую конструкцию:


SELECT id, model
FROM   table as t1
WHERE  exists (
    SELECT model
    FROM   table
    WHERE  model
           LIKE CONCAT('%', t1.model, '%')
)
 

В mysql есть поддержка регулярных выражений в сравнениях для этого используй REGEXP(RLIKE) . http://dev.mysql.com/doc/refman/5.1/en/regexp.html
Да и никто не отменял использовать обычный LIKE - поле1 LIKE "222%"