网站设计师专业品牌建设之道有哪些
网站设计师专业,品牌建设之道有哪些,太原网站建设51sole,建立公司企业网站FreeSql 支持功能丰富的表达式函数解析#xff0c;方便程序员在不了解数据库函数的情况下编写代码。这是 FreeSql 非常特色的功能之一#xff0c;深入细化函数解析尽量做到满意#xff0c;所支持的类型基本都可以使用对应的表达式函数#xff0c;例如 日期、字符串、IN查询… FreeSql 支持功能丰富的表达式函数解析方便程序员在不了解数据库函数的情况下编写代码。这是 FreeSql 非常特色的功能之一深入细化函数解析尽量做到满意所支持的类型基本都可以使用对应的表达式函数例如 日期、字符串、IN查询、数组PostgreSQL的数组、字典PostgreSQL HStore)等等。 IFreeSql fsql new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, Data Source127.0.0.1;Port3306;User IDroot;Passwordroot;Initial Catalogcccddd;Charsetutf8;SslModenone;Max pool size10).Build();[Table(Name tb_topic)]
class Topic {[Column(IsIdentity true, IsPrimary true)]public int Id { get; set; }public int Clicks { get; set; }public int TestTypeInfoGuid { get; set; }public string Title { get; set; }public DateTime CreateTime { get; set; }
}ISelectTopic select fsql.SelectTopic(); In查询 var t1 select.Where(a new[] { 1, 2, 3 }.Contains(a.testFieldInt)).ToSql();
//SELECT a.Id, a.Clicks, a.TestTypeInfoGuid, a.Title, a.CreateTime
//FROM tb_topic a
//WHERE (a.Id in (1,2,3)) 查找今天创建的数据 var t2 select.Where(a a.CreateTime.Date DateTime.Now.Date).ToSql(); SqlServer 下随机获取记录 var t3 select.OrderBy(a Guid.NewGuid()).Limit(1).ToSql();
//SELECT top 1 ...
//FROM [tb_topic] a
//ORDER BY newid() AOP拦截实现自定义解析 IFreeSql 对象有 Aop 成员那里提供一堆 AOP 拦截的方法。其实有一个事件名称ParseExpression。 /// summary
/// 可自定义解析表达式
/// /summary
EventHandlerAopParseExpressionEventArgs ParseExpression { get; set; }public class AopParseExpressionEventArgs : EventArgs {public AopParseExpressionEventArgs(Expression expression, FuncExpression, string freeParse) {this.Expression expression;this.FreeParse freeParse;}/// summary/// 内置解析功能可辅助您进行解析/// /summarypublic FuncExpression, string FreeParse { get; }/// summary/// 需要您解析的表达式/// /summarypublic Expression Expression { get; }/// summary/// 解析后的内容/// /summarypublic string Result { get; set; }
} FreeParse 是提供给外部的解析工具它拥有 FreeSql 所有表达式功能当您自定义解析的过程中遇到特别难处理的可通过它快速解析出表达式的子部分内容。 表达式函数全览 表达式MySqlSqlServerPostgreSQLOracle功能说明a ? b : ccase when a then b else c endcase when a then b else c endcase when a then b else c endcase when a then b else c enda成立时取b值否则取c值a ?? bifnull(a, b)isnull(a, b)coalesce(a, b)nvl(a, b)当a为null时取b值数字 数字a ba ba ba b数字相加数字 字符串concat(a, b)cast(a as varchar) cast(b as varchar)case(a as varchar)|| ba|| b字符串相加a或b任意一个为字符串时a - ba - ba - ba - ba - b减a * ba * ba * ba * ba * b乘a / ba / ba / ba / ba / b除a / ba div ba / ba / btrunc(a / b)整除(a,b都为整数)a % ba % ba % ba % bmod(a,b)模 等等... 数组 表达式MySqlSqlServerPostgreSQLOracle功能说明a.Length--case when a is null then 0 else array_length(a,1) end-数组长度常量数组.Length--array_length(array[常量数组元素逗号分割],1)-数组长度a.Any()--case when a is null then 0 else array_length(a,1) end 0-数组是否为空常量数组.Contains(b)b in (常量数组元素逗号分割)b in (常量数组元素逗号分割)b in (常量数组元素逗号分割)b in (常量数组元素逗号分割)IN查询a.Contains(b)--a array[b]-a数组是否包含b元素a.Concat(b)--a || b-数组相连a.Count()--同 Length-数组长度 一个细节证明 FreeSql 匠心制作 通用的 in 查询 select.Where(a new []{ 1,2,3 }.Contains(a.xxx)) 假设 xxxs 是 pgsql 的数组字段类型其实会与上面的 in 查询起冲突FreeSql 解决了这个矛盾 select.Where(a a.xxxs.Contains(1)) 字典 Dictionarystring, string 表达式MySqlSqlServerPostgreSQLOracle功能说明a.Count--case when a is null then 0 else array_length(akeys(a),1) end-字典长度a.Keys--akeys(a)-返回字典所有key数组a.Values--avals(a)-返回字典所有value数组a.Contains(b)--a b-字典是否包含ba.ContainsKey(b)--a? b-字典是否包含keya.Concat(b)--a || b-字典相连a.Count()--同 Count-字典长度JSON JToken/JObject/JArray 表达式MySqlSqlServerPostgreSQLOracle功能说明a.Count--jsonb_array_length(coalesce(a, []))-json数组类型的长度a.Any()--jsonb_array_length(coalesce(a, [])) 0-json数组类型是否为空a.Contains(b)--coalesce(a, {}) b::jsonb-json中是否包含ba.ContainsKey(b)--coalesce(a, {}) ? b-json中是否包含键ba.Concat(b)--coalesce(a, {})b::jsonbParse(a)--a::jsonb-转化字符串为json类型字符串 表达式MySqlSqlServerPostgreSQLOracleSqlitestring.Emptystring.IsNullOrEmpty(a)(a is null or a )(a is null or a )(a is null or a )(a is null or a )(a is null or a )string.Concat(a,b,c...)concat(a, b, c)a b ca || b || ca || b || ca || b || ca.CompareTo(b)strcmp(a, b)-case when a b then 0 when a b then 1 else -1 endcase when a b then 0 when a b then 1 else -1 endcase when a b then 0 when a b then 1 else -1 enda.Contains(b)a like %b%a like %b%a ilike%b%a like %b%a like %b%a.EndsWith(b)a like %ba like %ba ilike%ba like %ba like %ba.IndexOf(b)locate(a, b) - 1locate(a, b) - 1strpos(a, b) - 1instr(a, b, 1, 1) - 1instr(a, b) - 1a.Lengthchar_length(a)len(a)char_length(a)length(a)length(a)a.PadLeft(b, c)lpad(a, b, c)-lpad(a, b, c)lpad(a, b, c)lpad(a, b, c)a.PadRight(b, c)rpad(a, b, c)-rpad(a, b, c)rpad(a, b, c)rpad(a, b, c)a.Replace(b, c)replace(a, b, c)replace(a, b, c)replace(a, b, c)replace(a, b, c)replace(a, b, c)a.StartsWith(b)a like b%a like b%a ilikeb%a like b%a like b%a.Substring(b, c)substr(a, b, c 1)substring(a, b, c 1)substr(a, b, c 1)substr(a, b, c 1)substr(a, b, c 1)a.ToLowerlower(a)lower(a)lower(a)lower(a)lower(a)a.ToUpperupper(a)upper(a)upper(a)upper(a)upper(a)a.Trimtrim(a)trim(a)trim(a)trim(a)trim(a)a.TrimEndrtrim(a)rtrim(a)rtrim(a)rtrim(a)rtrim(a)a.TrimStartltrim(a)ltrim(a)ltrim(a)ltrim(a)ltrim(a) 使用字符串函数可能会出现性能瓶颈虽然不推荐使用但是作为功能库这也是不可缺少的功能之一。 日期 表达式MySqlSqlServerPostgreSQLOracleDateTime.Nownow()getdate()current_timestampsystimestampDateTime.UtcNowutc_timestamp()getutcdate()(current_timestamp at time zone UTC)sys_extract_utc(systimestamp)DateTime.Todaycurdateconvert(char(10),getdate(),120)current_datetrunc(systimestamp)DateTime.MaxValuecast(9999/12/31 23:59:59 as datetime)9999/12/31 23:59:599999/12/31 23:59:59::timestampto_timestamp(9999-12-31 23:59:59,YYYY-MM-DD HH24:MI:SS.FF6)DateTime.MinValuecast(0001/1/1 0:00:00 as datetime)1753/1/1 0:00:000001/1/1 0:00:00::timestampto_timestamp(0001-01-01 00:00:00,YYYY-MM-DD HH24:MI:SS.FF6)DateTime.Compare(a, b)a - ba - bextract(epoch from a::timestamp-b::timestamp)extract(day from (a-b))DateTime.DaysInMonth(a, b)dayofmonth(last_day(concat(a, -, b, -1)))datepart(day, dateadd(day, -1, dateadd(month, 1, cast(a as varchar) - cast(b as varchar) -1)))extract(day from (aDateTime.Equals(a, b)a ba ba ba bDateTime.IsLeapYear(a)a%40 and a%1000 or a%4000a%40 and a%1000 or a%4000a%40 and a%1000 or a%4000mod(a,4)0 AND mod(a,100)0 OR mod(a,400)0DateTime.Parse(a)cast(a as datetime)cast(a as datetime)a::timestampto_timestamp(a,YYYY-MM-DD HH24:MI:SS.FF6)a.Add(b)date_add(a, interval b microsecond)dateadd(millisecond, b / 1000, a)a::timestamp(ba.AddDays(b)date_add(a, interval b day)dateadd(day, b, a)a::timestamp(ba.AddHours(b)date_add(a, interval b hour)dateadd(hour, b, a)a::timestamp(ba.AddMilliseconds(b)date_add(a, interval b*1000 microsecond)dateadd(millisecond, b, a)a::timestamp(ba.AddMinutes(b)date_add(a, interval b minute)dateadd(minute, b, a)a::timestamp(ba.AddMonths(b)date_add(a, interval b month)dateadd(month, b, a)a::timestamp(ba.AddSeconds(b)date_add(a, interval b second)dateadd(second, b, a)a::timestamp(ba.AddTicks(b)date_add(a, interval b/10 microsecond)dateadd(millisecond, b / 10000, a)a::timestamp(ba.AddYears(b)date_add(a, interval b year)dateadd(year, b, a)a::timestamp(ba.Datecast(date_format(a, %Y-%m-%d) as datetime)convert(char(10),a,120)a::datetrunc(a)a.Daydayofmonth(a)datepart(day, a)extract(day from a::timestamp)cast(to_char(a,DD) as number)a.DayOfWeekdayofweek(a)datepart(weekday, a) - 1extract(dow from a::timestamp)case when to_char(a)7 then 0 else cast(to_char(a) as number) enda.DayOfYeardayofyear(a)datepart(dayofyear, a)extract(doy from a::timestamp)cast(to_char(a,DDD) as number)a.Hourhour(a)datepart(hour, a)extract(hour from a::timestamp)cast(to_char(a,HH24) as number)a.Millisecondfloor(microsecond(a) / 1000)datepart(millisecond, a)extract(milliseconds from a::timestamp)-extract(second from a::timestamp)*1000cast(to_char(a,FF3) as number)a.Minuteminute(a)datepart(minute, a)extract(minute from a::timestamp)cast(to_char(a,MI) as number)a.Monthmonth(a)datepart(month, a)extract(month from a::timestamp)cast(to_char(a,FF3) as number)a.Secondsecond(a)datepart(second, a)extract(second from a::timestamp)cast(to_char(a,SS) as number)a.Subtract(b)timestampdiff(microsecond, b, a)datediff(millisecond, b, a) * 1000(extract(epoch from a::timestamp-b::timestamp)*1000000)a - ba.Tickstimestampdiff(microsecond, 0001-1-1, a) * 10datediff(millisecond, 1970-1-1, a) * 10000 621355968000000000extract(epoch from a::timestamp)*10000000621355968000000000cast(to_char(a,FF7) as number)a.TimeOfDaytimestampdiff(microsecond, date_format(a, %Y-%m-%d), a)1970-1-1 convert(varchar, a, 14)extract(epoch from a::time)*1000000a - trunc(a)a.Yearyear(a)datepart(year, a)extract(year from a::timestamp)年a.Equals(b)a ba ba ba ba.CompareTo(b)a - ba - ba - ba - ba.ToString()date_format(a, %Y-%m-%d %H:%i:%s.%f)convert(varchar, a, 121)to_char(a, YYYY-MM-DD HH24:MI:SS.US)to_char(a,YYYY-MM-DD HH24:MI:SS.FF6)时间 表达式MySql(微秒)SqlServer(秒)PostgreSQL(微秒)Oracle(Interval day(9) to second(7))TimeSpan.Zero00-0微秒TimeSpan.MaxValue922337203685477580922337203685477580-numtodsinterval(233720368.5477580,second)TimeSpan.MinValue-922337203685477580-922337203685477580-numtodsinterval(-233720368.5477580,second)TimeSpan.Compare(a, b)a - ba - b-extract(day from (a-b))TimeSpan.Equals(a, b)a ba b-a bTimeSpan.FromDays(a)a * 1000000 * 60 * 60 * 24a * 1000000 * 60 * 60 * 24-numtodsinterval(a*86400,second)TimeSpan.FromHours(a)a * 1000000 * 60 * 60a * 1000000 * 60 * 60-numtodsinterval(a*3600,second)TimeSpan.FromMilliseconds(a)a * 1000a * 1000-numtodsinterval(a/1000,second)TimeSpan.FromMinutes(a)a * 1000000 * 60a * 1000000 * 60-numtodsinterval(a*60,second)TimeSpan.FromSeconds(a)a * 1000000a * 1000000-numtodsinterval(a,second)TimeSpan.FromTicks(a)a / 10a / 10-numtodsinterval(a/10000000,second)a.Add(b)a ba b-a ba.Subtract(b)a - ba - b-a - ba.CompareTo(b)a - ba - b-extract(day from (a-b))a.Daysa div (1000000 * 60 * 60 * 24)a div (1000000 * 60 * 60 * 24)-extract(day from a)a.Hoursa div (1000000 * 60 * 60) mod 24a div (1000000 * 60 * 60) mod 24-extract(hour from a)a.Millisecondsa div 1000 mod 1000a div 1000 mod 1000-cast(substr(extract(second from a)-floor(extract(second from a)),2,3) as number)a.Secondsa div 1000000 mod 60a div 1000000 mod 60-extract(second from a)a.Ticksa * 10a * 10-(extract(day from a)86400extract(hour from a)3600extract(minute from a)60extract(second from a))10000000a.TotalDaysa / (1000000 * 60 * 60 * 24)a / (1000000 * 60 * 60 * 24)-extract(day from a)a.TotalHoursa / (1000000 * 60 * 60)a / (1000000 * 60 * 60)-(extract(day from a)*24extract(hour from a))a.TotalMillisecondsa / 1000a / 1000-(extract(day from a)86400extract(hour from a)3600extract(minute from a)60extract(second from a))1000a.TotalMinutesa / (1000000 * 60)a / (1000000 * 60)-a.TotalSecondsa / 1000000a / 1000000-(extract(day from a)86400extract(hour from a)3600extract(minute from a)*60extract(second from a))a.Equals(b)a ba b-a ba.ToString()cast(a as varchar)cast(a as varchar)-to_char(a)数学函数 表达式MySqlSqlServerPostgreSQLOracleMath.Abs(a)abs(a)abs(a)abs(a)Math.Acos(a)acos(a)acos(a)acos(a)acos(a)Math.Asin(a)asin(a)asin(a)asin(a)asin(a)Math.Atan(a)atan(a)atan(a)atan(a)atan(a)Math.Atan2(a, b)atan2(a, b)atan2(a, b)atan2(a, b)-Math.Ceiling(a)ceiling(a)ceiling(a)ceiling(a)ceil(a)Math.Cos(a)cos(a)cos(a)cos(a)cos(a)Math.Exp(a)exp(a)exp(a)exp(a)exp(a)Math.Floor(a)floor(a)floor(a)floor(a)floor(a)Math.Log(a)log(a)log(a)log(a)log(e,a)Math.Log10(a)log10(a)log10(a)log10(a)log(10,a)Math.PI(a)3.14159265358979313.14159265358979313.14159265358979313.1415926535897931Math.Pow(a, b)pow(a, b)power(a, b)pow(a, b)power(a, b)Math.Round(a, b)round(a, b)round(a, b)round(a, b)round(a, b)Math.Sign(a)sign(a)sign(a)sign(a)sign(a)Math.Sin(a)sin(a)sin(a)sin(a)sin(a)Math.Sqrt(a)sqrt(a)sqrt(a)sqrt(a)sqrt(a)Math.Tan(a)tan(a)tan(a)tan(a)tan(a)Math.Truncate(a)truncate(a, 0)floor(a)trunc(a, 0)trunc(a, 0)类型转换 表达式MySqlSqlServerPostgreSQLOracleSqliteConvert.ToBoolean(a) | bool.Parse(a)a not in (0,false)a not in (0,false)a::varchar not in (0,false,f,no)-a not in (0,false)Convert.ToByte(a) | byte.Parse(a)cast(a as unsigned)cast(a as tinyint)a::int2cast(a as number)cast(a as int2)Convert.ToChar(a)substr(cast(a as char),1,1)substring(cast(a as nvarchar),1,1)substr(a::char,1,1)substr(to_char(a),1,1)substr(cast(a as character),1,1)Convert.ToDateTime(a) | DateTime.Parse(a)cast(a as datetime)cast(a as datetime)a::timestampto_timestamp(a,YYYY-MM-DD HH24:MI:SS.FF6)datetime(a)Convert.ToDecimal(a) | decimal.Parse(a)cast(a as decimal(36,18))cast(a as decimal(36,19))a::numericcast(a as number)cast(a as decimal(36,18))Convert.ToDouble(a) | double.Parse(a)cast(a as decimal(32,16))cast(a as decimal(32,16))a::float8cast(a as number)cast(a as double)Convert.ToInt16(a) | short.Parse(a)cast(a as signed)cast(a as smallint)a::int2cast(a as number)cast(a as smallint)Convert.ToInt32(a) | int.Parse(a)cast(a as signed)cast(a as int)a::int4cast(a as number)cast(a as smallint)Convert.ToInt64(a) | long.Parse(a)cast(a as signed)cast(a as bigint)a::int8cast(a as number)cast(a as smallint)Convert.ToSByte(a) | sbyte.Parse(a)cast(a as signed)cast(a as tinyint)a::int2cast(a as number)cast(a as smallint)Convert.ToString(a)cast(a as decimal(14,7))cast(a as decimal(14,7))a::float4to_char(a)cast(a as character)Convert.ToSingle(a) | float.Parse(a)cast(a as char)cast(a as nvarchar)a::varcharcast(a as number)cast(a as smallint)Convert.ToUInt16(a) | ushort.Parse(a)cast(a as unsigned)cast(a as smallint)a::int2cast(a as number)cast(a as unsigned)Convert.ToUInt32(a) | uint.Parse(a)cast(a as unsigned)cast(a as int)a::int4cast(a as number)cast(a as decimal(10,0))Convert.ToUInt64(a) | ulong.Parse(a)cast(a as unsigned)cast(a as bigint)a::int8cast(a as number)cast(a as decimal(21,0))Guid.Parse(a)substr(cast(a as char),1,36)cast(a as uniqueidentifier)a::uuidsubstr(to_char(a),1,36)substr(cast(a as character),1,36)Guid.NewGuid()-newid()---new Random().NextDouble()rand()rand()random()dbms_random.valuerandom()系列文章导航 一入门二自动迁移实体三实体特性四实体特性 Fluent Api五插入数据六批量插入数据七插入数据时忽略列八插入数据时指定列九删除数据十更新数据十一更新数据 Where十二更新数据时指定列十三更新数据时忽略列十四批量更新数据十五查询数据十六分页查询十七联表查询十八导航属性十九多表查询二十多表查询 WhereCascade二十一查询返回数据二十二Dto 映射查询二十三分组、聚合二十四Linq To Sql 语法使用介绍二十五延时加载二十六贪婪加载 Include、IncludeMany、Dto、ToList二十七将已写好的 SQL 语句与实体类映射进行二次查询二十八事务二十九Lambda 表达式三十读写分离三十一分区分表三十二Aop三十三CodeFirst 类型映射三十四CodeFirst 迁移说明三十五CodeFirst 自定义特性转载于:https://www.cnblogs.com/FreeSql/p/11531425.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89360.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!