Select *, Title AS Expr1, SubTitle AS Expr2
FROM [FS_News ]
Where (Title LIKE '% 贸易新手 %')
orDER BY Title
SQL 模糊查询 的语法为
“Select column FROM table Where column LIKE 'pattern'” 。
SQL 提供了四种匹配模式:
1. % 表示任意 0 个或多个字符。如下语句:
Select * FROM user Where name LIKE '% 三 %'
将会把 name 为 “ 张三 ” , “ 三脚猫 ” , “ 唐三藏 ” 等等有 “ 三 ” 的全找出来;
2. _ 表示任意单个字符。语句:
Select * FROM user Where name LIKE '_ 三 _'
只找出 “ 唐三藏 ” 这样 name 为三个字且中间一个字是 “ 三 ” 的;
Select * FROM user Where name LIKE ' 三 __'
只找出 “ 三脚猫 ” 这样 name 为三个字且第一个字是 “ 三 ” 的;
3. [ ] 表示括号内所列字符中的一个(类似与正则表达式)。语句:
Select * FROM user Where name LIKE '[ 张李王 ] 三 '
将找出 “ 张三 ” 、 “ 李三 ” 、 “ 王三 ” (而不是 “ 张李王三 ” );
如 [ ] 内有一系列字符( 01234 、 abcde 之类的)则可略写为 “0<chmetcnv unitname="”" sourcevalue="4" hasspace="False" negative="True" numbertype="1" tcsc="0"></chmetcnv>-4” 、 “a-e”
Select * FROM user Where name LIKE ' 老 [1-9]'
将找出 “ 老 <chmetcnv unitname="”" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0"></chmetcnv> 1” 、 “ 老 <chmetcnv unitname="”" sourcevalue="2" hasspace="False" negative="False" numbertype="1" tcsc="0"></chmetcnv> 2” 、 …… 、 “ 老 <chmetcnv unitname="”" sourcevalue="9" hasspace="False" negative="False" numbertype="1" tcsc="0"></chmetcnv> 9” ;
如要找 “-” 字符请将其放在首位: ' 张三 [-1-9]'
4. [^ ] 或 [! ] 表示不在括号所列之内的单个字符。语句:
Select * FROM user Where name LIKE '[^ 张李王 ] 三 '
将找出不姓 “ 张 ” 、 “ 李 ” 、 “ 王 ” 的 “ 赵三 ” 、 “ 孙三 ” 等;
Select * FROM user Where name LIKE ' 老 [^1-4]'
将排除 “ 老 <chmetcnv unitname="”" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0"></chmetcnv> 1” 到 “ 老 <chmetcnv unitname="”" sourcevalue="4" hasspace="False" negative="False" numbertype="1" tcsc="0"></chmetcnv> 4” 寻找 “ 老 <chmetcnv unitname="”" sourcevalue="5" hasspace="False" negative="False" numbertype="1" tcsc="0"></chmetcnv> 5” 、 “ 老 <chmetcnv unitname="”" sourcevalue="6" hasspace="False" negative="False" numbertype="1" tcsc="0"></chmetcnv> 6” 、 …… 、 “ 老 <chmetcnv unitname="”" sourcevalue="9" hasspace="False" negative="False" numbertype="1" tcsc="0"></chmetcnv> 9” 。
!最后是重点!
由于通配符的缘故,导致我们查询特殊字符 “%” 、 “_” 、 “[” 、 “'” 的语句无法正常实现,而把特殊字符用 “[ ]” 括起便可正常查询。据此我们写出以下函数:
function sqlencode(str)
str=replace(str,"'","''")
str=replace(str,"[","[[]") ' 此句一定要在最先
str=replace(str,"_","[_]")
str=replace(str,"%","[%]")
sqlencode=str
end function
在查询前将待查字符串先经该函数处理即可。
FROM [FS_News ]
Where (Title LIKE '% 贸易新手 %')
orDER BY Title
SQL 模糊查询 的语法为
“Select column FROM table Where column LIKE 'pattern'” 。
SQL 提供了四种匹配模式:
1. % 表示任意 0 个或多个字符。如下语句:
Select * FROM user Where name LIKE '% 三 %'
将会把 name 为 “ 张三 ” , “ 三脚猫 ” , “ 唐三藏 ” 等等有 “ 三 ” 的全找出来;
2. _ 表示任意单个字符。语句:
Select * FROM user Where name LIKE '_ 三 _'
只找出 “ 唐三藏 ” 这样 name 为三个字且中间一个字是 “ 三 ” 的;
Select * FROM user Where name LIKE ' 三 __'
只找出 “ 三脚猫 ” 这样 name 为三个字且第一个字是 “ 三 ” 的;
3. [ ] 表示括号内所列字符中的一个(类似与正则表达式)。语句:
Select * FROM user Where name LIKE '[ 张李王 ] 三 '
将找出 “ 张三 ” 、 “ 李三 ” 、 “ 王三 ” (而不是 “ 张李王三 ” );
如 [ ] 内有一系列字符( 01234 、 abcde 之类的)则可略写为 “0<chmetcnv unitname="”" sourcevalue="4" hasspace="False" negative="True" numbertype="1" tcsc="0"></chmetcnv>-4” 、 “a-e”
Select * FROM user Where name LIKE ' 老 [1-9]'
将找出 “ 老 <chmetcnv unitname="”" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0"></chmetcnv> 1” 、 “ 老 <chmetcnv unitname="”" sourcevalue="2" hasspace="False" negative="False" numbertype="1" tcsc="0"></chmetcnv> 2” 、 …… 、 “ 老 <chmetcnv unitname="”" sourcevalue="9" hasspace="False" negative="False" numbertype="1" tcsc="0"></chmetcnv> 9” ;
如要找 “-” 字符请将其放在首位: ' 张三 [-1-9]'
4. [^ ] 或 [! ] 表示不在括号所列之内的单个字符。语句:
Select * FROM user Where name LIKE '[^ 张李王 ] 三 '
将找出不姓 “ 张 ” 、 “ 李 ” 、 “ 王 ” 的 “ 赵三 ” 、 “ 孙三 ” 等;
Select * FROM user Where name LIKE ' 老 [^1-4]'
将排除 “ 老 <chmetcnv unitname="”" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0"></chmetcnv> 1” 到 “ 老 <chmetcnv unitname="”" sourcevalue="4" hasspace="False" negative="False" numbertype="1" tcsc="0"></chmetcnv> 4” 寻找 “ 老 <chmetcnv unitname="”" sourcevalue="5" hasspace="False" negative="False" numbertype="1" tcsc="0"></chmetcnv> 5” 、 “ 老 <chmetcnv unitname="”" sourcevalue="6" hasspace="False" negative="False" numbertype="1" tcsc="0"></chmetcnv> 6” 、 …… 、 “ 老 <chmetcnv unitname="”" sourcevalue="9" hasspace="False" negative="False" numbertype="1" tcsc="0"></chmetcnv> 9” 。
!最后是重点!
由于通配符的缘故,导致我们查询特殊字符 “%” 、 “_” 、 “[” 、 “'” 的语句无法正常实现,而把特殊字符用 “[ ]” 括起便可正常查询。据此我们写出以下函数:
function sqlencode(str)
str=replace(str,"'","''")
str=replace(str,"[","[[]") ' 此句一定要在最先
str=replace(str,"_","[_]")
str=replace(str,"%","[%]")
sqlencode=str
end function
在查询前将待查字符串先经该函数处理即可。