有没有一种严格的加入方式?

时间:2019-07-31 08:47:20

标签: mysql sql windev

我是sql的初学者,我正面临这个问题。

我必须在两个表(Masse和LX03)之间建立连接。

我的加入是在两个名称不同的列之间进行的:LX03.Emplacement和Masse.IDMasse

我从选择中排除了一些值,以缩短代码。

SELECT DISTINCT 
    Masse.IDMasse AS IDMasse,   
    Masse.Capacité_stock_sol AS Capacité_stock_sol, 
        ...
    LX03.Emplacement AS Emplacement,    
    LX03.Article AS Article,    
    ...
FROM 
    LX03 INNER JOIN Masse ON LX03.Emplacement = Masse.IDMasse

我希望查询完全匹配这两列,但不区分大小写。例如 : m14 = M14 m1-4 = m1-4

但是当我运行查询时,它会返回两个值不完全匹配的结果,例如: LX03.Emplacement = M1-4和Masse.IDMasse = M14

我最初尝试排除所有包含标点符号的值,但我也需要这些值。

我想知道是否有一种方法可以要求值严格相似,但不区分大小写吗?

我在互联网上找不到太多帮助,但是也许由于我是初学者,所以我没有使用正确的术语?如果是这样,请带我去一些解释它的网站-我想从我的错误中学习!

感谢您的帮助

编辑以进行澄清: 目前,这是我的查询匹配的两个值: M14 = M1-4 但是我不希望带有“-”的值与没有它的值匹配。

Picture of my results, to show where tey do not match

2 个答案:

答案 0 :(得分:0)

假设您只需要忽略value列中的-,则可以忽略大小写,然后在join子句中使用它们-

SELECT DISTINCT 
Masse.IDMasse AS IDMasse,   
Masse.Capacité_stock_sol AS Capacité_stock_sol, 
    ...
LX03.Emplacement AS Emplacement,    
LX03.Article AS Article,    
...
FROM LX03 
INNER JOIN Masse ON REPLCAE(UPPER(LX03.Emplacement), '-', '') = REPLCAE(UPPER(Masse.IDMasse), '-', '')

答案 1 :(得分:-1)

关于此:

但是当我运行查询时,它会返回两个值不完全匹配的结果,例如:LX03.Emplacement = M1-4和Masse.IDMasse = M14 最初,我尝试排除所有包含标点符号的值,但我也需要这些值。

您可以尝试比较长度(加入后)