作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个表,有几十万行,数据格式是index(int),words nvarchar(1000)。单词字符串由以空格分隔的单词集合组成,例如 word1 word2 word3
。我想阅读单词表并创建字典。就伪代码而言,这就是我想要的:
INSERT INTO dictionary (dictionaryword)
SELECt splitBySpace(words) FROM word;
这很简单,可以用 Java 或 C# 编写代码,但我发现系统处理数据需要很长时间。在其他处理中,运行 SQL 来处理查询(即不使用 C# 或 Java 处理数据)的成本效益是巨大的。
我想创建一个存储过程来读取单词、拆分它们,然后创建字典。我见过各种有点复杂的拆分程序,例如 https://dba.stackexchange.com/questions/21078/t-sql-table-valued-function-to-split-a-column-on-commas但我看不出如何为读取整个数据库、拆分单词和插入单词的任务重新编码。
有没有人有示例代码来拆分列数据然后插入它,出于效率的原因可以完全在 SQL 中实现?
最佳答案
这是解决方案。
数据链接:
create table sentence(t varchar(100))
insert into sentence values
('Once upon a time in America'),
('Eyes wide shut')
DML:
select distinct ca.d as words from sentence s
cross apply(select split.a.value('.', 'varchar(100)') as d
from
(select cast('<x>' + REPLACE(s.t, ' ', '</x><x>') + '</x>' as xml) as d) as a
cross apply d.nodes ('/x') as split(a)) ca
输出:
words
a
America
Eyes
in
Once
shut
time
upon
wide
关于sql - 拆分列数据并插入 - SQL Server 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30284522/
我是一名优秀的程序员,十分优秀!