我是 SQL 的新手,所以希望有人可以为我说明这一点。我尝试按照“替换 SQL 查询中的多个字符串”发布,但我被卡住了。
我正在尝试与上述帖子的发起人做同样的事情,但使用不同的表格和不同的字段。假设下面的字段“ ShiptoPlant
”在表“ BTST
”中有3条记录(我的表实际上有数千条记录)......
表名:BTST
---------------
| ShiptoPlant |
| ----------- |
| Plant #1 |
| Plant - 2 |
| Plant/3 |
---------------
这是我试图在 SQL 屏幕中输入的内容:
SELECT CASE WHEN ShipToPlant IN ("#", "-", "/") Then ""
ELSE ShipToPlant END FROM BTST;
我不断收到消息(错误 3075)...
"Syntax error (missing operator) in query expression
'CASE WHEN ShiptoPlant IN (";","/"," ") Then "" ELSE ShipToPlant END'."
我想对键盘上的每个字符执行此操作,但"*"
因为它是通配符除外。
您能提供的任何帮助将不胜感激!
编辑:从评论中添加的背景信息
我从我们的 14 家供应商那里收集了 2008 日历年的单项发票级别数据。我正在尝试规范供应商提供给我们的工厂名称。
每个供应商都可以用不同的名称来称呼工厂,例如
供应商可以调用我们主列表上的Signode 服务
Signode Service
Signode - Service.
SignodeSvc
SignodeService
我正在尝试去除非字母数字字符,以便我可以尝试使用我们的主列表来识别植物,方法是创建一系列查看前 10 个字符的链接,如果不匹配,则为 8 个字符、6、4...
我的基本问题是我不知道如何从表格中删除字母数字字符。我将在几个列上执行此操作,但我计划创建单独的查询来编辑其他列。
也许我需要做一个删除所有字母数字的批量更新查询。我仍然不清楚如何写它。这是我开始删除所有空间的方法。它工作得很好,但是当我尝试嵌套替换时失败了
UPDATE BTST SET ShipToPlant = replace(ShipToPlant," ","");
编辑 2:从评论中获取的更多信息
每个月,多达 100 个新的植物名称排列出现在我们的行项目发票数据中——这可能代表数千个发票记录。我正在尝试构建一种快速而肮脏的方法来将最终名称的 master_id 分配给每个植物名称排列。我认为最好的方法是查看工厂、地址、城市和州字段,但问题是这些字段也有各种排列,例如,
128 Brookview Drive
128 Brookview Lane
通过取出字母数字并做
LEFT(PlantName,#chars) & _
LEFT(Address,#chars) & _
LEFT(City,#chars) & _
LEFT(State,#chars)
通过更改字符数直到在发票数据和主工厂列表(两个表都包含工厂、地址、城市和州)之间找到匹配项,您最终可以找到匹配项。当然,当您开始减少正在输入的字符数时LEFT
,准确性就会受到影响。我已经在 excel 中完成了这项工作,并且获得了不错的收益。谁能推荐一个更好的解决方案?