我的一个同事在处理COBOL程序时遇到了此问题,并最终在应用程序级别解决了该问题。我仍然很好奇,是否有可能使用SQL在数据访问级别上解决它。这在某种程度上与另一个问题有关,但是我只想使用ANSI SQL。
我正在寻找一个对包含可变长度CSV行的VARCHAR字段起作用的SQL选择查询。该查询的目的是在其自己的结果集行中拆分每个CSV字段。
这是一个带有模式和数据的示例
CREATE TABLE table1 (`field` varchar(100));
INSERT INTO table1 (`field`)
VALUES
('Hello,world,!') ,
('Haloa,!') ,
('Have,a,nice,day,!');
这是我想从查询中获得的输出:
Hello
world
!
Haloa
!
Have
a
nice
day
!
所使用的CSV分隔符是逗号,现在我不必担心转义。
据我所知,这是ANSI SQL:
with recursive word_list (field, word, rest, field_id, level) as (
select field,
substring(field from 1 for position(',' in field) - 1) as word,
substring(field from position(',' in field) + 1) as rest,
row_number() over () as field_id,
1
from table1
union all
select c.field,
case
when position(',' in p.rest) = 0 then p.rest
else substring(p.rest from 1 for position(',' in p.rest) - 1)
end as word,
case
when position(',' in p.rest) = 0 then null
else substring(p.rest from position(',' in p.rest) + 1)
end as rest,
p.field_id,
p.level + 1
from table1 as c
join word_list p on c.field = p.field and position(',' in p.rest) >= 0
)
select word
from word_list
order by field_id, level;
这假定infield
中的值是唯一的。
本文向大家介绍SQL字段拆分优化,包括了SQL字段拆分优化的使用技巧和注意事项,需要的朋友参考一下 今天看到一条用函数处理连接的SQL,是群里某位网友的,SQL语句如下: 语句不算复杂,只是执行比较慢,下面是关于这SQL语句的一些信息: --1.SQL执行203条数据 --2.耗时12秒 --3.so_order表的fid字段是字符串集合, --由1-2个字符串组成,用','分隔 通过分析执行
问题内容: 我有桌子: 我想要这样的输出: 问题答案: 如果可以创建一个数字表,其中包含从1到要拆分的最大字段的数字,则可以使用以下解决方案: 请看这里的小提琴。 如果无法创建表,则解决方案可以是: 这里有个小提琴例子。
我有表: 我想要这样的输出:
我有这样一份清单: 如何将此列表拆分为三个变量,每个变量分别保持不变
正在尝试从csv文件中读取数据,将每行拆分为各自的列。 但是,当某个列本身带有逗号时,我的正则表达式就失败了。 例如:a, b, c,"d, e, g,", f 我想要的结果是: 也就是5列。 下面是用逗号分隔字符串的正则表达式am ,(?=(?:“[^”]?(?:[^”])*)),(?=[^”](?:,),$) 但是它对少数字符串失败,而对其他字符串有效。 我想要的是,当我使用pyspark将c
我在csv文件中有一个列,其中包含此格式的人员详细信息: 实际csv格式: 我想将它们拆分为一个新的csv文件,如下所示: 拆分详细信息: 拆分行分隔符: