Что такое этот операнд (* = star-equals) в SQL Server 2000?
У меня есть запрос, который я вытащил из ms sql 2000 и подключился к запросу MySql. Это не сработало, MySql задохнется от оператора * =. В этом примере у меня есть два столбца varchar, называемые person_name.
SELECT * FROM tbl1 a, tbl2 b
WHERE a.id = b.id
AND a.person_name *= b.person_name
Я знаю на других языках myInt * = myTotal также может быть прочитан как myInt * myInt = myTotal. Тем не менее, я работаю с varchars, которые содержат все символы, целые числа. Я написал это как:
AND a.person_name * a.person_name = b.person_name
Voila! Кажется, он сработал. Может кто-нибудь объяснить, что происходит? Является ли оператор * = преобразованием символов в их целые эквиваленты или? И почему я не мог найти этот оператор в любом месте в Интернете?
Ответы
Ответ 1
В SQL 2000 это использовалось как LEFT OUTER JOIN
= * - ВРАЩАЮЩАЯСЯ ВЕРСИЯ
Ваш запрос может быть:
SELECT
*
FROM
tbl1 a LEFT OUTER JOIN tbl2 b ON a.person_name = b.person_name
WHERE
a.id = b.id
Как указано here:
Задает внешнее соединение, используя нестандартный синтаксис, специфичный для продукта и предложение WHERE. Оператор * = используется для указания левого внешнего соединения и оператор = * используется для указания правое внешнее соединение.
Ответ 2
В MSSQL соглашение * = в предложении WHERE указывает на соединение. Итак, вы действительно видите LEFT OUTER JOIN между tbl1 и tbl2 на person_name, где будут возвращены все значения из tbl1 и соответствующие значения на tbl2.