当前位置: 首页 > 面试题库 >

如何使用MS SQL获取所有字段记录中使用的单词的不同列表?

江坚成
2023-03-14
问题内容

如果我有一个名为“ description”的表字段,那么什么是SQL(使用MS SQL)来获取该字段中使用的所有不同单词的记录列表。

例如:

如果表格的“说明”字段包含以下内容:

Record1 "The dog jumped over the fence."
Record2 "The giant tripped on the fence."
...

SQL记录输出为:

"The","giant","dog","jumped","tripped","on","over","fence"

问题答案:

我不认为您可以使用SELECT来做到这一点。最好的机会是编写一个用户定义的函数,该函数将返回包含所有单词的表,然后对其执行SELECT DISTINCT。

免责声明: 函数 dbo.Split
来自http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=50648

CREATE TABLE test
(
    id int identity(1, 1) not null,
    description varchar(50) not null
)

INSERT INTO test VALUES('The dog jumped over the fence')
INSERT INTO test VALUES('The giant tripped on the fence')

CREATE FUNCTION dbo.Split
(
    @RowData nvarchar(2000),
    @SplitOn nvarchar(5)
)  
RETURNS @RtnValue table 
(
    Id int identity(1,1),
    Data nvarchar(100)
) 
AS  
BEGIN 
    Declare @Cnt int
    Set @Cnt = 1

    While (Charindex(@SplitOn,@RowData)>0)
    Begin
        Insert Into @RtnValue (data)
        Select 
            Data = ltrim(rtrim(Substring(@RowData,1,Charindex(@SplitOn,@RowData)-1)))

        Set @RowData = Substring(@RowData,Charindex(@SplitOn,@RowData)+1,len(@RowData))
        Set @Cnt = @Cnt + 1
    End

    Insert Into @RtnValue (data)
    Select Data = ltrim(rtrim(@RowData))

    Return
END

CREATE FUNCTION dbo.SplitAll(@SplitOn nvarchar(5))
RETURNS @RtnValue table
(
    Id int identity(1,1),
    Data nvarchar(100)
)
AS
BEGIN
DECLARE My_Cursor CURSOR FOR SELECT Description FROM dbo.test
DECLARE @description varchar(50)

OPEN My_Cursor
FETCH NEXT FROM My_Cursor INTO @description
WHILE @@FETCH_STATUS = 0
BEGIN
    INSERT INTO @RtnValue
    SELECT Data FROM dbo.Split(@description, @SplitOn)
   FETCH NEXT FROM My_Cursor INTO @description
END
CLOSE My_Cursor
DEALLOCATE My_Cursor

RETURN

END

SELECT DISTINCT Data FROM dbo.SplitAll(N' ')


 类似资料:
  • 我需要你对Web应用程序概念的帮助。我想使用单个查询从不同的表中获取不同的列。所有表中的一列都是相同的,比如pk_data(varchar)。但是我需要基于列的不同列。例如,我需要第一个表的用户名和第二个表的地址,第三个表的年龄和第四个表的成本。但是我还需要使用带有列的where子句。 我们可以用其他方式理解这个问题。我有一个变量,其中包含许多。我想根据此记录获取数据。 并且< code>Hash

  • 问题内容: 我发现了Java:查找方法的所有调用者–获取所有调用特定方法的方法,这提示如何查找特定方法的所有调用者。 那么,如何获得静态字段的用户呢? 例如,当我有静态的,并且它与访问,如何获得 ? 问题答案: 该示例基于org.eclipse.jdt.internal。*类,由于JDT SearchEngine API具有全功能,因此我认为您无需花费太多精力。就您而言,下面的代码就足够了:

  • 问题内容: 我一直在到处寻找它,但仍然找不到解决方案:如何从mySQL列中获取所有值并将它们存储在数组中? 例如:表名称:客户列名称:ID,名称行数:5 我想获得此表中所有5个名称的数组。我该怎么做?我正在使用PHP,而我只是想: 然后使用 PHP函数将这些值存储在数组中。 问题答案: 请注意,此答案已过时! 从PHP7开始,mysql扩展不再可用。如果要在PHP7中使用旧的mysql函数,则必须

  • 我能够在弹性搜索 6.8 中使用聚合查询获取数据库中文本字段的所有值: 我正在尝试为嵌套字段做同样的事情。 下面是文本字段(城市)和嵌套字段(冷却)的示例 下面是我一直引用的文档:https://www.elastic.co/guide/en/elasticsearch/reference/6.8/search-aggregations-bucket-terms-aggregation.html

  • 我试图显示以用户输入的字母开始的单词列表。 因此,例如,如果我在我的列表中添加了三个词,cat、玉米和dog,并且用户输入了字母c,那么Java小程序上的输出应该是cat、玉米。 但是,我不知道该怎么做。 正在将所有用户输入添加到秘密存储的列表中,我现在想在按下时制作另一个按钮,以显示用户以指定字母开头的单词。

  • 问题内容: 我正在尝试使用Java API从Elasticsearch获取所有记录。但我收到以下错误 n [[Wild Thing] [localhost:9300] [indices:data / read / search [phase / dfs]]]; 嵌套:QueryPhaseExecutionException [结果窗口太大,从+大小必须小于或等于:[10000],但为[10101]