mysql - 根据外键的子字符串连接两个表(MS SQL 2005)

标签 mysql sql sql-server

我被困在连接两个表“a”和“b”中。下面给出了两个表的结构。

表A

+-------------+---------------------+
+ SKU         |     Title           +
+-------------+---------------------+
+ 12345_786   |  Some text          +
+             |                     +
+ 12345_231   |  Sony               +
+             |                     +
+ 12345_222   |  Samsung            +
+             |                     +
+ 67481_21    |  IBM                +
+             |                     +
+ 88723_231   |  HP                 +
+-------------+---------------------+

表B

+-------+---------------------+
+ SKU   |     Price           +
+-------+---------------------+
+ 786   |  $230               +
+       |                     +
+ 231   |  $540               +
+       |                     +
+ 222   |  $120               +
+       |                     +
+ 21    |  $220               +
+       |                     +
+ 231   |  $50                +
+-------+---------------------+

表 SKU 惯例是父 SKU + ""+ 子 SKU。所以表中的每个 sku 都有一个子 sku。父子被“”分隔。

我想在表 B.SKU 的“_”之后加入表 A.SKU 部分

到目前为止,我已经尝试了以下查询,但没有得到想要的结果。

SELECT A.SKU,B.Price
FROM A
INNER JOIN
B ON 
Substring(A.SKU, patindex('%_%', A.SKU), 
Cast(Len(A.SKU) as int)-cast(patindex('%_%',A.SKU)as int)) 
= CAST(B.SKU AS varchar(12))

非常感谢您在此方面的帮助。

最佳答案

您发现的问题是因为 _ 下划线字符在模式字符串中具有含义,很像 % 百分号字符。

您需要按照本文中的引用对其进行转义 How to escape underscore character in PATINDEX pattern argument?

关于mysql - 根据外键的子字符串连接两个表(MS SQL 2005),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23129247/

相关文章:

java.sql.SQLException : No suitable driver found for jdbc:microsoft

sql - 需要计算截止日期的年月日

sql-server - 无法在 SSRS 中编辑或删除计划报告

mysql - MySql 数据库中的 URL 值不完整?

mysql - 如何获取带有逗号分隔符的计数值作为单行值

python - 如何更改 Alembic 中主键字段的长度?

sql - 使用 RODBC 的 MS-SQL 大容量插入

mysql 联合选择具有 1 个不同的条件

mysql - 将数据从 csv 文件导入 MySQL 表时如何避免创建空格

mysql - 错误联合sql查询