我知道有几种方法可以找到哪一行的列包含字符串,例如使用[column name] regexp''或[column name] like''
虽然目前我需要一些帮助,但我有一个包含多个列的表,所有的都有varchar或text,我不确定哪个列包含某个字符串.只是说我想从表中搜索"xxx.几个不同的列可以包含这个字符串.有没有办法可以找到哪个列包含这个字符串?
我有一个想法,解决方案可能是
select * from [table name] where [column1] regexp 'xxx' or
[column2] regexp 'xxx' or ...... [column39] regexp 'xxx' or .....
[colum60] regexp 'xxx' or ... or [column 80] regexp 'xxx';
Run Code Online (Sandbox Code Playgroud)
我不希望这样的查询.还有另一种有效的方法吗?
为了给出一个更好的例子,假设我们正在搜索属于博客的表.
我们有标题,网址,内容,关键词,标签,评论等.现在我们只是说,如果任何博客文章与"数据库规范化"有关,这个词可能出现在标题,URL或内容中或任何地方,我不想一个一个地写出来
where title regexp 'database-normalization' or content regexp 'database-normalization' or url regexp 'database-normalization'......
Run Code Online (Sandbox Code Playgroud)
因为当有数百列时,我需要写一百,或者在这种情况下是否有一种有效的方式而不是写百或语句?就像使用if-else或集合或其他一些来构建查询一样.