Mysql 如何在SQL中从表的单元格中获取前n行

Mysql 如何在SQL中从表的单元格中获取前n行,mysql,sql,Mysql,Sql,我有一个表,其中有一行三列。在C列中,单元格中有多行。如何在C列的前3行中搜索“hi”。我有兴趣在C列的前n行中搜索模式 假设下表为: ---A----B----C ----as------de------ef -------------------jk -------------------lm 提前感谢。如果您只需要搜索一行,您可以执行以下操作(您需要将文本放入@cellText,并使用行数设置@n,调整换行符,然后为mySQL重写): 什么是RDBMS?其中一些支持正则表达式,这可能会满足

我有一个表,其中有一行三列。在C列中,单元格中有多行。如何在C列的前3行中搜索“hi”。我有兴趣在C列的前n行中搜索模式

假设下表为:

---A----B----C

----as------de------ef

-------------------jk

-------------------lm


提前感谢。

如果您只需要搜索一行,您可以执行以下操作(您需要将文本放入@cellText,并使用行数设置@n,调整换行符,然后为mySQL重写):


什么是RDBMS?其中一些支持正则表达式,这可能会满足您的需要。您是在同一行中有多行,还是在同一个表中讨论多行?C列前n行的顺序是什么?,表格没有隐含的或自然的顺序。您是否可以对表格进行规范化,使其不必在一列中包含多行文本,而是有另一个表格链接到
TableA
的主键,并在单独的一行中包含每行文本?处理合并在一行中的多行可能是噩梦般的。它必须只搜索单行的单元格C,还是搜索所有行的单元格C?
declare @n int
set @n = 2

declare @cellText varchar(100)
select @cellText = '1xxx
2xxx
3xxx
4xxx'
---------------------------

declare @textToSearch varchar(100)
set @textToSearch = ''

declare @counter int
set @counter = 0
while charindex( CHAR(13)+CHAR(10), @cellText) > 0 
begin
   set @counter = @counter + 1
   set @textToSearch = @textToSearch + LEFT(@cellText, charindex( CHAR(13)+CHAR(10), @cellText)+1)
   set @cellText = SUBSTRING(@cellText, charindex( CHAR(13)+CHAR(10),@cellText)+2, LEN(@cellText))
   if @counter = @n break
end
if @n > @counter and LEN(@cellText) > 0 set @textToSearch = @textToSearch + @cellText

-- search your text here
select @textToSearch