Подтвердить что ты не робот

Что такое этот операнд (* = 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! Кажется, он сработал. Может кто-нибудь объяснить, что происходит? Является ли оператор * = преобразованием символов в их целые эквиваленты или? И почему я не мог найти этот оператор в любом месте в Интернете?

4b9b3361

Ответ 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.