1
分開我有一個表只有一個山坳,幷包含自由文本,並且每個關鍵字用空格MySQL中,通過空間
TEXT
apple orange dog
apple banna cat
我想有一個結果某物像
分開排名的關鍵字apple 2
orange 1
dog 1
banna 1
cat 1
只用SQL可能嗎?
分開我有一個表只有一個山坳,幷包含自由文本,並且每個關鍵字用空格MySQL中,通過空間
TEXT
apple orange dog
apple banna cat
我想有一個結果某物像
分開排名的關鍵字apple 2
orange 1
dog 1
banna 1
cat 1
只用SQL可能嗎?
試試這個
創建功能
Create FUNCTION [dbo].[fn_Split](@text varchar(8000), @delimiter varchar(20))
RETURNS @Strings TABLE
(
position int IDENTITY PRIMARY KEY,
value varchar(8000)
)
AS
BEGIN
DECLARE @index int
SET @index = -1
WHILE (LEN(@text) > 0)
BEGIN
SET @index = CHARINDEX(@delimiter , @text)
IF (@index = 0) AND (LEN(@text) > 0)
BEGIN
INSERT INTO @Strings VALUES (@text)
BREAK
END
IF (@index > 1)
BEGIN
INSERT INTO @Strings VALUES (LEFT(@text, @index - 1))
SET @text = RIGHT(@text, (LEN(@text) - @index))
END
ELSE
SET @text = RIGHT(@text, (LEN(@text) - @index))
END
RETURN
END
查詢
declare @ColumnNameList VARCHAR(MAX)
select @ColumnNameList = COALESCE(@ColumnNameList +' ' ,'') +column from table
select @ColumnNameList
select value,count(value) as count from (select value from fn_split((select @ColumnNameList),' '))
Space_tbl group by value
將它永遠是3個值? – Darvanen