我有一个数据库表,其中包含“访问地点”中使用的城镇和城市。搜索范围。
城镇/城市字段以逗号分隔。当人们搜索布拉德福德这样的地方时,这会引起问题,因为它会为Bradford Upon Avon带来结果(它只会产生一个结果,这是它在匹配的表中看到的第一个记录)。
更新所有记录的最简单方法是什么,因此我只能为整个短语创建SQL搜索,例如或者布拉德福德'或者' Bradford on avon',而不只是列表中的一个词。
有些记录中只有一个城镇。
我应该更新表格以用条形替换逗号和空格吗?
答案 0 :(得分:1)
更新字段以根据需要将其分成单独的行,列或表。将CSV数据存储在关系数据库中通常是一个坏主意 - 数据库可以轻松生成CSV数据(并且可能具有导入CSV数据的一些功能),但除非您将其存储为BLOB(您不是) ,它应该在不同的列中。
例如,您可以创建一个“CitiesVisited”表,该表具有用户记录的外键列。您可以将多个城市外键加入同一个用户。
用户表:
UserID | UserName | OtherUserInfo
----------------------------------
1 Dan Some info
城市访问表:
CityVisitID | CityName | UserID
----------------------------------
1 Stratford 1
2 New Haven 1
3 London 2
然后,您可以检查给定用户轻松访问的所有城市,即
SELECT cv.CityName
FROM CityVisited cv
INNER JOIN Users u
ON cv.UserID = u.UserID
WHERE u.UserName = 'Dan'
或者,如果您已经在代码中知道了您的用户ID ...
SELECT cv.CityName
FROM CityVisited cv
WHERE cv.UserID = 1
答案 1 :(得分:1)
最好的方法是将字段划分为单独的列,以避免逗号分隔的问题。对于你而言,任何其他方法都会变成太多令人头疼的问题,而且工作多于利润。任何其他查询将更容易,其性能更好。此外,结构将相应地保留数据库的语义。
有几种方法可以将xls或csv文件导入基础。无论我们是在谈论phpMyAdmin,HeidiSQL,MySQL Workbench,......这个过程都非常简单。如果您打算导入特定字段(如日期),则只需要小心。确保您的数据格式与目标字段类型1一致。如果你的源码有特殊字符[因为我是西班牙人;)这有时是我的情况]也许你可能想要在进行输入之前将结果.txt(例如)文件转换为utf8之前变成纯文本。 / p>
希望能帮到你。
答案 2 :(得分:0)
我想你有这样的标准:PlaceColumn Like LookFor & "*"
。请改为尝试:PlaceColumn = LookFor OR Placecolumn Like LookFor & ", *"
,您无需更改数据。