SQL Server 2000 中的这个操作数(*= 星号等于)是什么?

发布于 2024-11-14 08:13:17 字数 468 浏览 3 评论 0原文

我有一个从 ms sql 2000 中提取并插入到 MySql 查询中的查询。它不起作用,MySql 会因 *= 运算符而卡住。在此示例中,我有两个名为 person_name 的 varchar 列。

SELECT * FROM tbl1 a, tbl2 b 
WHERE a.id = b.id
AND a.person_name *= b.person_name

我知道在其他语言中 myInt *= myTotal 也可以读作 myInt * myInt = myTotal。但是,我正在使用包含所有字符但不包含整数的 varchar。我这样写:

AND a.person_name * a.person_name = b.person_name

瞧!看来这已经奏效了。有人可以解释发生了什么事吗? *= 运算符是将字符转换为其整数等效项还是?为什么我在网络上找不到这个运营商?

I have a query that I pulled from ms sql 2000 and plugged into a MySql query. It did not work, MySql would choke on the *= operator. In this example I have two varchar columns called person_name.

SELECT * FROM tbl1 a, tbl2 b 
WHERE a.id = b.id
AND a.person_name *= b.person_name

I know in other languages myInt *= myTotal could also be read as myInt * myInt = myTotal. However, I'm working with varchars that contain all chars, no integers. I wrote it out like:

AND a.person_name * a.person_name = b.person_name

Voila! It appears to have worked. Can somebody explain what is happening? Is the *= operator converting the chars to their integer equivalents or? And why couldn't I find this operator anywhere on the web?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不语却知心 2024-11-21 08:13:17

在 SQL 2000 中,这被用作 LEFT OUTER JOIN

=* 是 RIGHT OUTER JOIN

您的查询可以是:

SELECT 
  * 
FROM 
  tbl1 a LEFT OUTER JOIN tbl2 b ON a.person_name = b.person_name
WHERE 
  a.id = b.id

如所述 此处

使用以下方式指定外连接
非标准产品特定语法
和 WHERE 子句。 *= 运算符
用于指定左外连接
=* 运算符用于指定
右外连接。

In SQL 2000 this was used as a LEFT OUTER JOIN

=* is a RIGHT OUTER JOIN

Your query could be:

SELECT 
  * 
FROM 
  tbl1 a LEFT OUTER JOIN tbl2 b ON a.person_name = b.person_name
WHERE 
  a.id = b.id

As stated here:

Specifies an outer join using the
nonstandard product-specific syntax
and the WHERE clause. The *= operator
is used to specify a left outer join
and the =* operator is used to specify
a right outer join.

聽兲甴掵 2024-11-21 08:13:17

在 MSSQL 中,WHERE 子句中的 *= 约定表示连接。因此,您真正看到的是 person_name 上 tbl1 和 tbl2 之间的 LEFT OUTER JOIN,其中将返回 tbl1 中的所有值和 tbl2 上的匹配值。

In MSSQL, the *= convention in the WHERE clause indicates a join. So what you are really seeing is a LEFT OUTER JOIN between tbl1 and tbl2 on person_name where all the values from tbl1 and the matching values on tbl2 will be returned.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文