MySQL 加入其中一个字段周围的标签被剥离
MySQL joins where one field has surrounding tags to be stripped
我有两个 MySQL 表,articoli
和 tabtranslations
,它们之间的连接应该很简单
SELECT CodArt, Translation FROM articoli LEFT JOIN tabtranslations ON articoli.CodArt = tabtranslations.Chiave
但是,虽然 articoli.CodArt
有简单的字符串(A001
、BS15
等),字段 tabtranslations.Chiave
充满了周围的标签,例如 <CODART>A001</CODART>
, <CODART>BS15</CODART>
因此连接过于复杂 - 我无法修改它...
嗯,有什么办法可以解决这个问题吗?谢谢
我不知道,但也许这会奏效?
SELECT CodArt, Translation
FROM articoli
LEFT JOIN tabtranslations ON tabtranslations.Chiave LIKE '%' + articoli.CodArt + '%'
一个快速而肮脏的解决方案是这样的:
SELECT CodArt, Translation
FROM
articoli LEFT JOIN tabtranslations
ON CONCAT('<CODART>', articoli.CodArt, '</CODART>') = tabtranslations.Chiave
以防万一 'CODART' 不是唯一可能的标记,您可能希望在连接谓词中使用 REGEXP
,如下所示:
select *
from codart c
left join tabtranslations t
on t.chiave REGEXP CONCAT('<.*>', c.codart, '</.*>');
这里有一个示例 fiddle 供您试用:http://sqlfiddle.com/#!9/d6c04/1
我有两个 MySQL 表,articoli
和 tabtranslations
,它们之间的连接应该很简单
SELECT CodArt, Translation FROM articoli LEFT JOIN tabtranslations ON articoli.CodArt = tabtranslations.Chiave
但是,虽然 articoli.CodArt
有简单的字符串(A001
、BS15
等),字段 tabtranslations.Chiave
充满了周围的标签,例如 <CODART>A001</CODART>
, <CODART>BS15</CODART>
因此连接过于复杂 - 我无法修改它...
嗯,有什么办法可以解决这个问题吗?谢谢
我不知道,但也许这会奏效?
SELECT CodArt, Translation
FROM articoli
LEFT JOIN tabtranslations ON tabtranslations.Chiave LIKE '%' + articoli.CodArt + '%'
一个快速而肮脏的解决方案是这样的:
SELECT CodArt, Translation
FROM
articoli LEFT JOIN tabtranslations
ON CONCAT('<CODART>', articoli.CodArt, '</CODART>') = tabtranslations.Chiave
以防万一 'CODART' 不是唯一可能的标记,您可能希望在连接谓词中使用 REGEXP
,如下所示:
select *
from codart c
left join tabtranslations t
on t.chiave REGEXP CONCAT('<.*>', c.codart, '</.*>');
这里有一个示例 fiddle 供您试用:http://sqlfiddle.com/#!9/d6c04/1