Mysql 任何记录字段上的SQL文本搜索

Mysql 任何记录字段上的SQL文本搜索,mysql,sql,sql-server,oracle,Mysql,Sql,Sql Server,Oracle,我正在构建一个网格系统,我需要搜索任何字段或我的记录上出现的文本,甚至是字符串、时间戳和数字 比如: SELECT * FROM MYTABLE WHERE ANY_FIELD CONTAINS ('MyText') 如果不是的话,那么解决办法是什么 PS:我使用mySql作为数据库,但我还必须在Oracle和SqlServer上支持它 谢谢您的帮助。我对MySQL的了解还不足以提供任何解决方案,但既然您提到您也需要在SQL Server上使用这种搜索方法,我可以为这方面提供解决方案 在SQL

我正在构建一个网格系统,我需要搜索任何字段或我的记录上出现的文本,甚至是字符串、时间戳和数字

比如:

SELECT * FROM MYTABLE WHERE ANY_FIELD CONTAINS ('MyText')
如果不是的话,那么解决办法是什么

PS:我使用mySql作为数据库,但我还必须在Oracle和SqlServer上支持它


谢谢您的帮助。

我对MySQL的了解还不足以提供任何解决方案,但既然您提到您也需要在SQL Server上使用这种搜索方法,我可以为这方面提供解决方案

在SQL Server中,通过调用一些XML和XQuery魔术,您可以同时搜索所有列:

Declare @Value nvarchar(max)

Set @Value = 'YourSearchTextHere'

;With xml As
(
    Select  T2.Xml, T1.SomePrimaryId
    From    YourTable as T1
    Cross Apply 
    (
        Select T1.* for xml path(''), type
    ) as T2(Xml)
)
Select  c.*
From    xml x
Join    YourTable c on c.SomePrimaryId = x.SomePrimaryId
Where   x.xml.value('contains((.),sql:variable("@Value"))','bit') = 1
这里有一个正在运行的演示


本质上,它是将表中的每一行转换为XML,列作为单独的节点,然后在XML中搜索其值包含您正在搜索的值的任何节点。

我对MySQL了解不够,因此无法提供任何解决方案,但既然您提到您也需要在SQL Server上使用此搜索方法,我可以为这方面提供一个解决方案

SELECT * FROM MYTABLE WHERE MATCH (ANY_FIELD_1, ANY_FIELD_2) AGAINST ('MyText' IN BOOLEAN MODE)
在SQL Server中,通过调用一些XML和XQuery魔术,您可以同时搜索所有列:

Declare @Value nvarchar(max)

Set @Value = 'YourSearchTextHere'

;With xml As
(
    Select  T2.Xml, T1.SomePrimaryId
    From    YourTable as T1
    Cross Apply 
    (
        Select T1.* for xml path(''), type
    ) as T2(Xml)
)
Select  c.*
From    xml x
Join    YourTable c on c.SomePrimaryId = x.SomePrimaryId
Where   x.xml.value('contains((.),sql:variable("@Value"))','bit') = 1
这里有一个正在运行的演示

本质上,它将表中的每一行转换为XML,列作为单独的节点,然后在该XML中搜索其值包含您正在搜索的值的任何节点

SELECT * FROM MYTABLE WHERE MATCH (ANY_FIELD_1, ANY_FIELD_2) AGAINST ('MyText' IN BOOLEAN MODE)
你也可以看看。下面是一些您可能需要或希望在代码中实现的运算符,例如

+
代表和

-
表示“不”

你也可以看看。下面是一些您可能需要或希望在代码中实现的运算符,例如

+
代表和

-
表示不

以开头以开头