Использование столбцов в RegExp в MySQL

Я сказал бы, что это зависит от браузера. Ничто не бьет эксперимент, в этом случае простой JavaScript, вероятно, сделал бы.

Обновление: я означал делать что-то вроде этого:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>CSS Speed Test</title>
    <style type="text/css">
    .first { color: red; }
    </style>
    <script type="text/javascript">
    window.onload = function()
    {
        var container = document.getElementById("container");
        var totalTime = 0;
        var passes = 100;
        for (var p=1; p<=passes; p++)
        {
            var startTime = new Date();
            for (var i=0; i<1000; i++)
            {
                var outerDiv = document.createElement("div");
                var innerDiv = document.createElement("div");
                var span = document.createElement("span");
                outerDiv.className = "first";
                innerDiv.className = "second";
                span.appendChild(document.createTextNode("Hello, world!"));
                outerDiv.appendChild(innerDiv);
                innerDiv.appendChild(span);
                container.appendChild(outerDiv);
            }                       
            var endTime = new Date();
            totalTime += (endTime - startTime);
        }                           
        alert("Average time: " + totalTime/passes);
    }
    </script>
</head>
<body>
    <div id="container"></div>
</body>
</html>

†¦, но разница во времени, вызванная различными селекторами, кажется, являются слишком маленькими для измерения, как сказал annakata.

10
задан Eric 25 August 2009 в 04:45
поделиться

1 ответ

Вы ищете буквальную строку a.company , а не столбец. Попробуйте следующее:

SELECT a.id, a.company, a.name, b.title, b.description, b.t_id
FROM a, b
WHERE 
    ( 
        b.title REGEXP concat('[[:<:]]', a.company, '[[:>:]]') 
        OR b.description REGEXP concat('[[:<:]]', a.company, '[[:>:]]') 
        OR b.title REGEXP concat('[[:<:]]', a.name, '[[:>:]]')
        OR b.description REGEXP concat('[[:<:]]', a.name, '[[:>:]]')
    ) 
    AND a.company !=  '' AND a.name !=  ''

Это предоставляет регулярное выражение со значением столбца, а не строку 'a.company' . Поскольку я предполагаю, что вы хотите сравнить значение столбца (а не имя столбца), вам нужно будет объединить ваше регулярное выражение вместе.

Вы можете проверить это с помощью этого запроса:

select
    'My col: a.company' as Test1,
    'My col: ' + a.company as Test2
from
    a

Здесь , Test1 всегда будет значением My col: a.company , а Test2 будет My col: <значение столбца компании здесь> .

10
ответ дан 4 December 2019 в 01:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: