1,sqlite 没有 ToUpper 的自带函数。 没关系,我们可以创建它;
2,sqlite 不能直接创建自定义函数,不能像 sql server中那样方便创建并使用。没关系,我们照样可以创建它,创建成功后,我们照样可以随心所欲(比如 批量更新等)。
效果:
var ss = JonseTest.SqlLiteHelper.GetSingle(out sError, "select ToUpper('ABCcdsf')"); // ABCCDSF
var ss2 = JonseTest.SqlLiteHelper.GetSingle(out sError, "select GetChinesePYChar('我a*%爱你中国')"); // Wa*%ANZG
方案:
step1: 创建类 ToUpper 和 GetChinesePYChar
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SQLite; namespace MetroGuide { [SQLiteFunction(Name = "ToUpper", Arguments = 1, FuncType = FunctionType.Scalar)] public class ToUpper : SQLiteFunction { public override object Invoke(object[] args) { return args[0].ToString().ToUpper(); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SQLite; namespace MetroGuide { [SQLiteFunction(Name = "GetChinesePYChar", Arguments = 1, FuncType = FunctionType.Scalar)] public class GetChinesePYChar : SQLiteFunction { public override object Invoke(object[] args) { string sOrigion = args[0].ToString(); return Common.GetPYString(sOrigion); } } }
step2:
var ss = JonseTest.SqlLiteHelper.GetSingle(out sError, "select ToUpper('ABCcdsf')"); // ABCCDSF
var ss2 = JonseTest.SqlLiteHelper.GetSingle(out sError, "select GetChinesePYChar('我a*%爱你中国')"); // Wa*%ANZG
step3:
public static string ResetAllPointNameChinesePYChar()
{
return "update tblLinePoint set ChinesePYChar=GetChinesePYChar(Name)";
}
结束。
参考 :
http://blog.csdn.net/huanshanv20008/article/details/7635092