我不太确定这里的问题是什么,我只知道数据库无法正常工作。
两个显示一些基本数据结构,表1看起来像这样
name | inGameID
Azure Plagioclase | 17455
Plagioclase | 18
viscous Pyroxeres| 17460
Onyx Ochre | 1232
表2类似于此类
userName | item
sam | Onyx Ochre
mike | viscous Pyroxeres
dave | azure plagioclase
尝试运行此查询时
SELECT fl.item, od.name
FROM oreData od
JOIN fleetLog fl ON lower(od.name) = lower(fl.item)
order by fl.logID asc
结果只有on玛瑙的值。什么时候应该返回更多的数据。 t1.name和t2.item都具有相同的数据类型。我不确定需要哪些细节来帮助诊断这个问题,但是我更喜欢这个问题。我很乐意提供更多细节。我为这么模糊而道歉,我在
之前从未遇到过这样的问题 你们在头上敲了一下钉子。它是在这些值的前面或末尾的额外空白区域。解决这个问题的最佳方法是什么?'39';'2';'1';'2001-03-13 00:14:27';'userName';'322';'Vivid Hemorphite
'
'38';'2';'1';'2001-03-13 00:19:28';'userName';'6386';'Azure Plagioclase
'
答案 0 :(得分:2)
你们在头上敲了一下钉子。它是在这些值的前面或末尾的额外空白区域。解决这个问题的最佳方法是什么?
修复您的应用程序代码,以便此类数据不会进入数据库;如果无法做到这一点,您可以在数据库中定义触发器,以便在写入操作期间根据需要去除字符:
CREATE TRIGGER oreData_ins BEFORE INSERT ON oreData FOR EACH ROW
SET NEW.name = TRIM(NEW.name);
CREATE TRIGGER oreData_upd BEFORE UPDATE ON oreData FOR EACH ROW
SET NEW.name = TRIM(NEW.name);
CREATE TRIGGER fleetLog_ins BEFORE INSERT ON fleetLog FOR EACH ROW
SET NEW.item = TRIM(NEW.item);
CREATE TRIGGER fleetLog_upd BEFORE UPDATE ON fleetLog FOR EACH ROW
SET NEW.item = TRIM(NEW.item);
更新现有数据:
UPDATE oreData SET name = TRIM(name);
UPDATE fleetLog SET item = TRIM(item);