在MSSQL做LIKE查询的时候 /// <summary>
/// 取LIKE参数转换
/// </summary>
/// <param name="Value">查询LIKE字符串</param>
/// <returns></returns>
public static String FormatLike(String Value)
{
if (string.IsNullOrEmpty(Value))
{
return Value;
}
Value = Value.Replace("[", "[[]");
Value = Value.Replace("]", "[]]");
Value = Value.Replace("%", "[%]");
Value = Value.Replace("_", "[_]");
Value = System.Text.RegularExpressions.Regex.Replace(Value.Trim(), @"[\s]+", "%"); return Value;
}---------------
我用这个来格式化用户的输入进行Like查询但是现在换为ORACLE的时候 就不行了,那ORACLE的是要怎么格式化的?如:
查询包吃住了 "JOB_O"的
MSSQL为:
select * from t_zd where zdlx like '%JOB[_]O%'
但ORACLE
select * from t_zd where zdlx like '%JOB[_]O%'
这样查询就不行
而还是
select * from t_zd where zdlx like '%JOB_O%'那ORACLE的LIKE查询中有哪些特殊字符,如何进行处理谢谢
/// 取LIKE参数转换
/// </summary>
/// <param name="Value">查询LIKE字符串</param>
/// <returns></returns>
public static String FormatLike(String Value)
{
if (string.IsNullOrEmpty(Value))
{
return Value;
}
Value = Value.Replace("[", "[[]");
Value = Value.Replace("]", "[]]");
Value = Value.Replace("%", "[%]");
Value = Value.Replace("_", "[_]");
Value = System.Text.RegularExpressions.Regex.Replace(Value.Trim(), @"[\s]+", "%"); return Value;
}---------------
我用这个来格式化用户的输入进行Like查询但是现在换为ORACLE的时候 就不行了,那ORACLE的是要怎么格式化的?如:
查询包吃住了 "JOB_O"的
MSSQL为:
select * from t_zd where zdlx like '%JOB[_]O%'
但ORACLE
select * from t_zd where zdlx like '%JOB[_]O%'
这样查询就不行
而还是
select * from t_zd where zdlx like '%JOB_O%'那ORACLE的LIKE查询中有哪些特殊字符,如何进行处理谢谢
select * from t_zd where zdlx like '%JOB/_O%' escape '/';
还可以instr判断
或者用正则表达式
select * from t_zd where instr(zdlx,'JOB_O')>0;
select * from t_zd where regexp_like(zdlx,'JOB_O');