sql - 如何避免sql server中的游标?也想避免 while 循环

标签 sql database loops

我的数据库中有两个表,第一个包含几个句子,例如“我喜欢苹果和香蕉”,第二个包含关键字,例如“苹果”和“橙色”。我想创建一个 sql 语句或 usp 来列出第一个表中的所有列以及第二个表中的关键字。如何在不使用游标的情况下实现这一点?

除了 while 循环之外,还有人有一些聪明的想法吗?那太好了。

谢谢, 玲

最佳答案

看看这是不是你需要的...

选项 1 将为每个匹配短语的关键字返回一行...

选项 2 返回短语中关键字的 CSV。请注意,这使用了 SQL 2005 相关函数。

我已经为你做了一个测试用例......也许会帮助你解释问题。

create table #test(id int identity(1,1), phrase varchar(1000))

create table #kenter code hereeyword(id int identity(1,1), keyword varchar(50))

insert into #test
select 'I like apples and bananas'

insert into #keyword
select 'APPLE'
UNION
select 'BANANA'
UNION 
select 'RASPBERY'


select 
    t.*,
    k.keyword
 from #test t
    inner join #keyword k on t.phrase like '%' + k.keyword + '%'

--OR...


select 
    t.*,
    Keywords = (    
        select k.keyword + ',' as [text()] 
        from #keyword k 
        where t.phrase like '%' + k.keyword + '%'
        FOR XML PATH('')) 
 from #test t



drop table #test

drop table #keyword

关于sql - 如何避免sql server中的游标?也想避免 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3078455/

相关文章:

javascript - 使用基于子数组元素 id 的键创建 couchdb View

java - 尝试显示数据库数据时转换集合时出现问题

Python:在迭代之间更改代码

c# - 如何对数据库类进行单元测试

Android For 循环不停止

MySQL - 使用 IN 子句从 LEFT JOIN 结果检查多个值

php - 使用表中的 LIMIT 选择 'person' 的数据

sql - 在sql中使用Oracle "at time zone"函数 - 问题及解决方案

sql - 按字段值连接 SQL 表

mysql - 如何从 Drupal 中的数据库中获取表名列表