From d561b29a0565c4c8122216763f4494e86673f66e Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Mon, 18 Mar 2019 18:54:36 +0800 Subject: [PATCH] update --- 更新日志.md | 1 + 表达式函数.md | 46 +++++++++++++++++++++++++++++----------------- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/更新日志.md b/更新日志.md index fdbc2a7..39aa1af 100644 --- a/更新日志.md +++ b/更新日志.md @@ -8,6 +8,7 @@ - 整理 延时加载/导航属性查询的对象关系,仍然不依赖外键; - 完成 OneToOne/ManyToOne、ManyToMany/OneToMany 导航属性的查询 [#15](https://github.com/2881099/FreeSql/issues/15); - 增加 IEnumerable 扩展方法 AsSelect,转成 ISelect,以便使用 FreeSql 的查询功能; +- 增加 int.Parse Guid.Parse 系列转换、Guid.NewGuid、new Random.NextDouble 等表达式函数解析; ## v0.3.16 diff --git a/表达式函数.md b/表达式函数.md index 57424b7..d21d0ea 100644 --- a/表达式函数.md +++ b/表达式函数.md @@ -34,6 +34,15 @@ var t1 = select.Where(a => new[] { 1, 2, 3 }.Contains(a.testFieldInt)).ToSql(); var t2 = select.Where(a => a.CreateTime.Date == DateTime.Now.Date).ToSql(); ``` +## SqlServer 下随机获取记录 + +```csharp +var t3 = select.OrderBy(a => Guid.NewGuid()).Limit(1).ToSql(); +//SELECT top 1 ... +//FROM [tb_topic] a +//ORDER BY newid() +``` + ## 表达式函数全览 | 表达式 | MySql | SqlServer | PostgreSQL | Oracle | 功能说明 | @@ -203,23 +212,26 @@ var t2 = select.Where(a => a.CreateTime.Date == DateTime.Now.Date).ToSql(); | Math.Truncate(a) | truncate(a, 0) | floor(a) | trunc(a, 0) | trunc(a, 0) | ### 类型转换 -| 表达式 | MySql | SqlServer | PostgreSQL | Oracle | -| - | - | - | - | - | -| Convert.ToBoolean(a) | a not in ('0','false') | a not in ('0','false') | a::varchar not in ('0','false','f','no') | - | -| Convert.ToByte(a) | cast(a as unsigned) | cast(a as tinyint) | a::int2 | cast(a as number) | -| 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) | -| Convert.ToDateTime(a) | cast(a as datetime) | cast(a as datetime) | a::timestamp | to_timestamp(a,'YYYY-MM-DD HH24:MI:SS.FF6') | -| Convert.ToDecimal(a) | cast(a as decimal(36,18)) | cast(a as decimal(36,19)) | a::numeric | cast(a as number) | -| Convert.ToDouble(a) | cast(a as decimal(32,16)) | cast(a as decimal(32,16)) | a::float8 | cast(a as number) | -| Convert.ToInt16(a) | cast(a as signed) | cast(a as smallint) | a::int2 | cast(a as number) | -| Convert.ToInt32(a) | cast(a as signed) | cast(a as int) | a::int4 | cast(a as number) | -| Convert.ToInt64(a) | cast(a as signed) | cast(a as bigint) | a::int8 | cast(a as number) | -| Convert.ToSByte(a) | cast(a as signed) | cast(a as tinyint) | a::int2 | cast(a as number) | -| Convert.ToString(a) | cast(a as decimal(14,7)) | cast(a as decimal(14,7)) | a::float4 | to_char(a) | -| Convert.ToSingle(a) | cast(a as char) | cast(a as nvarchar) | a::varchar | cast(a as number) | -| Convert.ToUInt16(a) | cast(a as unsigned) | cast(a as smallint) | a::int2 | cast(a as number) | -| Convert.ToUInt32(a) | cast(a as unsigned) | cast(a as int) | a::int4 | cast(a as number) | -| Convert.ToUInt64(a) | cast(a as unsigned) | cast(a as bigint) | a::int8 | cast(a as number) | +| 表达式 | MySql | SqlServer | PostgreSQL | Oracle | Sqlite | +| - | - | - | - | - | - | +| Convert.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::int2 | cast(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::timestamp | to_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::numeric | cast(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::float8 | cast(a as number) | cast(a as double) | +| Convert.ToInt16(a) \| short.Parse(a) | cast(a as signed) | cast(a as smallint) | a::int2 | cast(a as number) | cast(a as smallint) | +| Convert.ToInt32(a) \| int.Parse(a) | cast(a as signed) | cast(a as int) | a::int4 | cast(a as number) | cast(a as smallint) | +| Convert.ToInt64(a) \| long.Parse(a) | cast(a as signed) | cast(a as bigint) | a::int8 | cast(a as number) | cast(a as smallint) | +| Convert.ToSByte(a) \| sbyte.Parse(a) | cast(a as signed) | cast(a as tinyint) | a::int2 | cast(a as number) | cast(a as smallint) | +| Convert.ToString(a) | cast(a as decimal(14,7)) | cast(a as decimal(14,7)) | a::float4 | to_char(a) | cast(a as character) | +| Convert.ToSingle(a) \| float.Parse(a) | cast(a as char) | cast(a as nvarchar) | a::varchar | cast(a as number) | cast(a as smallint) | +| Convert.ToUInt16(a) \| ushort.Parse(a) | cast(a as unsigned) | cast(a as smallint) | a::int2 | cast(a as number) | cast(a as unsigned) | +| Convert.ToUInt32(a) \| uint.Parse(a) | cast(a as unsigned) | cast(a as int) | a::int4 | cast(a as number) | cast(a as decimal(10,0)) | +| Convert.ToUInt64(a) \| ulong.Parse(a) | cast(a as unsigned) | cast(a as bigint) | a::int8 | cast(a as number) | cast(a as decimal(21,0)) | +| Guid.Parse(a) | substr(cast(a as char),1,36) | cast(a as uniqueidentifier) | a::uuid | substr(to_char(a),1,36) | substr(cast(a as character),1,36) | +| Guid.NewGuid() | - | newid() | - | - | - | +| new Random().NextDouble() | rand() | rand() | random() | dbms_random.value | random() | ## 参考资料