#1021 fix sqlite padleft padright

This commit is contained in:
igeekfan
2022-04-16 17:37:19 +08:00
parent 8c022b3e0a
commit 1b7dd3024f
2 changed files with 78 additions and 4 deletions

View File

@ -0,0 +1,73 @@
using FreeSql.DataAnnotations;
using FreeSql;
using System;
using System.Collections.Generic;
using Xunit;
using System.Linq;
using Newtonsoft.Json.Linq;
using NpgsqlTypes;
using Npgsql.LegacyPostgis;
using System.Linq.Expressions;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
using System.Threading;
using System.Data.SqlClient;
using kwlib;
using System.Diagnostics;
using System.IO;
using System.Text;
namespace FreeSql.Tests.Issues
{
public class _1021
{
[Fact]
public void PadLeft()
{
var fsql = g.sqlite;
var list1 = fsql.Select<sport>()
.OrderBy(t => t.OldId.PadLeft(4))
.ToList(r => new sport { id = r.id, name = r.name, OldId = r.OldId.PadLeft(4) });
/*
SELECT a."id" as1, a."name" as2, padl(a."OldId", 4) as3
FROM "sport" a
ORDER BY padl(a."OldId", 4)
*/
var list2 = fsql.Select<sport>()
.OrderBy(t => t.OldId.PadLeft(2,'0'))
.ToList(r => new sport { id = r.id, name = r.name, OldId = r.OldId.PadLeft(2, '0') });
/*
SELECT a."id" as1, a."name" as2, leftstr(REPLACE(padl(a."OldId", 2 ), ' ', '0'), 2-length(a."OldId"))||a."OldId" as3
FROM "sport" a
ORDER BY leftstr(REPLACE(padl(a."OldId", 2 ), ' ', '0'), 2-length(a."OldId"))||a."OldId"
*/
var list3 = fsql.Select<sport>()
.OrderBy(t => t.OldId.PadRight(4))
.ToList(r => new sport { id = r.id, name = r.name, OldId = r.OldId.PadRight(4) });
/*
SELECT a."id" as1, a."name" as2, padr(a."OldId", 4) as3
FROM "sport" a
ORDER BY padr(a."OldId", 4)
*/
var list4 = fsql.Select<sport>()
.OrderBy(t => t.OldId.PadRight(2, '0'))
.ToList(r => new sport { id = r.id, name = r.name, OldId = r.OldId.PadRight(2, '0') });
/*
SELECT a."id" as1, a."name" as2, a."OldId"||rightstr(REPLACE(padr(a."OldId",2),' ','0'),CASE WHEN 2-length(a."OldId")<=0 THEN 0 ELSE 2-length(a."OldId")END) as3
FROM "sport" a
ORDER BY a."OldId"||rightstr(REPLACE(padr(a."OldId",2),' ','0'),CASE WHEN 2-length(a."OldId")<=0 THEN 0 ELSE 2-length(a."OldId")END)
*/
}
public class sport
{
public int id { get; set; }
public string name { get; set; }
public string OldId { get; set; }
}
}
}