我正在将数据库导入到 DB Browser SQLite,需要执行 SQL 并剪切最后一个单词,包括红色圆圈中的“-”,用于数据库中“slug”下的所有行。
有什么命令可以做到这些吗?
谢谢
是否有任何命令可以执行 SQL 并剪切数据库行中的最后一个单词?
简而言之没有。
但是,您可以提取最后一个词,但假设没有进一步的特定关注词(例如它的长度)会很麻烦。
在考虑预期用途的情况下设计数据库可能会更有效率。
例如,以下内容将使用以下假设/条件/约束提取最后一个单词:-
:-
SELECT *,
CASE
WHEN instr(substr(slug,length(slug) -2),'-') > 0
THEN substr(slug,length(slug)-1)
WHEN instr(substr(slug,length(slug) -3),'-') > 0
THEN substr(slug,length(slug)-3)
WHEN instr(substr(slug,length(slug) -4),'-') > 0
THEN substr(slug,length(slug)-4)
WHEN instr(substr(slug,length(slug) -5),'-') > 0
THEN substr(slug,length(slug)-4)
WHEN instr(substr(slug,length(slug) -6),'-') > 0
THEN substr(slug,length(slug)-5)
WHEN instr(substr(slug,length(slug) -7),'-') > 0
THEN substr(slug,length(slug)-6)
WHEN instr(substr(slug,length(slug) -8),'-') > 0
THEN substr(slug,length(slug)-7)
WHEN instr(substr(slug,length(slug) -9),'-') > 0
THEN substr(slug,length(slug)-8)
WHEN instr(substr(slug,length(slug) -10),'-') > 0
THEN substr(slug,length(slug)-9)
WHEN instr(substr(slug,length(slug) -11),'-') > 0
THEN substr(slug,length(slug)-10)
WHEN instr(substr(slug,length(slug) -12),'-') > 0
THEN substr(slug,length(slug)-11)
WHEN instr(substr(slug,length(slug) -13),'-') > 0
THEN substr(slug,length(slug)-12)
WHEN instr(substr(slug,length(slug) -14),'-') > 0
THEN substr(slug,length(slug)-13)
WHEN instr(substr(slug,length(slug) -15),'-') > 0
THEN substr(slug,length(slug)-14)
WHEN instr(substr(slug,length(slug) -16),'-') > 0
THEN substr(slug,length(slug)-15)
WHEN instr(substr(slug,length(slug) -17),'-') > 0
THEN substr(slug,length(slug)-16)
WHEN instr(substr(slug,length(slug) -18),'-') > 0
THEN substr(slug,length(slug)-17)
WHEN instr(substr(slug,length(slug) -19),'-') > 0
THEN substr(slug,length(slug)-18)
WHEN instr(substr(slug,length(slug) -20),'-') > 0
THEN substr(slug,length(slug)-19)
WHEN instr(substr(slug,length(slug) -21),'-') > 0
THEN substr(slug,length(slug)-20)
WHEN instr(substr(slug,length(slug) -22),'-') > 0
THEN substr(slug,length(slug)-21)
WHEN instr(substr(slug,length(slug) -23),'-') > 0
THEN substr(slug,length(slug)-22)
WHEN instr(substr(slug,length(slug) -24),'-') > 0
THEN substr(slug,length(slug)-23)
WHEN instr(substr(slug,length(slug) -25),'-') > 0
THEN substr(slug,length(slug)-24)
WHEN instr(substr(slug,length(slug) -26),'-') > 0
THEN substr(slug,length(slug)-25)
WHEN instr(substr(slug,length(slug) -27),'-') > 0
THEN substr(slug,length(slug)-26)
WHEN instr(substr(slug,length(slug) -28),'-') > 0
THEN substr(slug,length(slug)-27)
WHEN instr(substr(slug,length(slug) -29),'-') > 0
THEN substr(slug,length(slug)-28)
WHEN instr(substr(slug,length(slug) -30),'-') > 0
THEN substr(slug,length(slug)-29)
ELSE 'ooops not found'
END AS lastword
FROM mytable;
例如,如果输入表是(数据不同,因为我不会尝试从屏幕截图中复制,也不会尝试计算最后一个单词是否相同长度):-
上述结果将是:-
结尾的字符串看起来都一样长。如果是这样,您可以这样做:
select substr(slug, 1, length(slug) - <n>)
其中<n>
是要删除的字符串的长度。
从 xxx 中选择 SUBSTRING_INDEX(slug,"-", -1)。