我有一个表,该表具有一列,可以说通道ID具有-AB,ABC,ABCD,ABDHC等值。现在我需要删除通道ID-AB
如何实现?
答案 0 :(得分:0)
这是一个可以执行此操作的查询(TSQL):
UPDATE [YourTable]
SET [channel id] = SUBSTRING([channel id], 0, CHARINDEX('AB', [channel id]))
+ SUBSTRING([channel id], CHARINDEX('AB', [channel id]) + LEN('AB'), LEN([channel id]))
WHERE [channel id] LIKE '%AB%'
这会将XXXXABYYYY设置为XXXXYYYY。
如果您提供了一套准确的信息,包括您所拥有的,想要的以及使用的语言,那么我们将更容易为您提供帮助。
答案 1 :(得分:0)
您是说桌子看起来像这样吗?
channel_table:
------------
id |channel_id|
------------
1 |AB, ABC, ABCD, ABDHC|
2 |XYZ, ZY|
如果您已在SQL表中将值另存为CSV,那么我希望使用客户端语言进行数学运算,以获取此数据。我的意思是,首先检测所有具有“ AB”的行,如下所示:
select id,channel_id from channel_table where channel_id like '%AB%';
上面的查询将返回所有带有正则表达式的channel_id,例如 AB 。现在将所有这些存储到一个数组中,遍历每个数组,用逗号分隔字符串,如果找到确切的“ AB”,则将其从数组中删除。请注意,您甚至必须维护一个“ id”列,以便您可以更新表。
在此过程之后,您可能将数组设置为:
id数组-> 1
channel_id数组-> ABC,ABCD,ABDHC
现在使用循环中的更新查询用值更新所有id:
update channel_table set channel_id=<modified_channel_value> where id=<saved_id>
为了更好的数据库设计,您可以将channel_id存储为单独的行,因为RDBMS的意思是单个值包含一行。在表中存储和处理CSV,表中的对象总是很困难。