我被困在连接两个表“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/