diff --git a/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs b/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs index 2d55a3dd05..0215ba27bb 100644 --- a/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs +++ b/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs @@ -274,12 +274,14 @@ namespace Umbraco.Core.Persistence.Repositories var sortedInt = string.Format(SqlSyntax.ConvertIntegerToOrderableString, "dataInt"); var sortedDate = string.Format(SqlSyntax.ConvertDateToOrderableString, "dataDate"); var sortedString = string.Format(SqlSyntax.IsNull, "dataNvarchar", "''"); + var sortedDecimal = string.Format(SqlSyntax.ConvertDecimalToOrderableString, "dataInt"); var orderBySql = string.Format(@"ORDER BY ( SELECT CASE - WHEN dataInt Is Not Null THEN {0} - WHEN dataDate Is Not Null THEN {1} - ELSE {2} + WHEN dataInt Is Not Null THEN {0} + WHEN dataDecimal Is Not Null THEN {1} + WHEN dataDate Is Not Null THEN {2} + ELSE {3} END FROM cmsContent c INNER JOIN cmsContentVersion cv ON cv.ContentId = c.nodeId AND VersionDate = ( @@ -290,7 +292,7 @@ namespace Umbraco.Core.Persistence.Repositories INNER JOIN cmsPropertyData cpd ON cpd.contentNodeId = c.nodeId AND cpd.versionId = cv.VersionId INNER JOIN cmsPropertyType cpt ON cpt.Id = cpd.propertytypeId - WHERE c.nodeId = umbracoNode.Id and cpt.Alias = @0)", sortedInt, sortedDate, sortedString); + WHERE c.nodeId = umbracoNode.Id and cpt.Alias = @0)", sortedInt, sortedDecimal, sortedDate, sortedString); sortedSql.Append(orderBySql, orderBy); if (orderDirection == Direction.Descending) diff --git a/src/Umbraco.Core/Persistence/SqlSyntax/ISqlSyntaxProvider.cs b/src/Umbraco.Core/Persistence/SqlSyntax/ISqlSyntaxProvider.cs index e663c8e64b..c70b6a571a 100644 --- a/src/Umbraco.Core/Persistence/SqlSyntax/ISqlSyntaxProvider.cs +++ b/src/Umbraco.Core/Persistence/SqlSyntax/ISqlSyntaxProvider.cs @@ -73,6 +73,7 @@ namespace Umbraco.Core.Persistence.SqlSyntax string IsNull { get; } string ConvertIntegerToOrderableString { get; } string ConvertDateToOrderableString { get; } + string ConvertDecimalToOrderableString { get; } IEnumerable GetTablesInSchema(Database db); IEnumerable GetColumnsInSchema(Database db); diff --git a/src/Umbraco.Core/Persistence/SqlSyntax/MySqlSyntaxProvider.cs b/src/Umbraco.Core/Persistence/SqlSyntax/MySqlSyntaxProvider.cs index d02a5fb8dc..d4585f5aa1 100644 --- a/src/Umbraco.Core/Persistence/SqlSyntax/MySqlSyntaxProvider.cs +++ b/src/Umbraco.Core/Persistence/SqlSyntax/MySqlSyntaxProvider.cs @@ -363,7 +363,8 @@ ORDER BY TABLE_NAME, INDEX_NAME", public override string IsNull { get { return "IFNULL({0},{1})"; } } public override string ConvertIntegerToOrderableString { get { return "LPAD({0}, 8, '0')"; } } public override string ConvertDateToOrderableString { get { return "DATE_FORMAT({0}, '%Y%m%d')"; } } - + public override string ConvertDecimalToOrderableString { get { return "LPAD({0}, 25, '0')"; } } + public override bool? SupportsCaseInsensitiveQueries(Database db) { bool? supportsCaseInsensitiveQueries = null; diff --git a/src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxProviderBase.cs b/src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxProviderBase.cs index 35c133ce6e..b7b58d929f 100644 --- a/src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxProviderBase.cs +++ b/src/Umbraco.Core/Persistence/SqlSyntax/SqlSyntaxProviderBase.cs @@ -540,5 +540,6 @@ namespace Umbraco.Core.Persistence.SqlSyntax public virtual string IsNull { get { return "ISNULL({0},{1})"; } } public virtual string ConvertIntegerToOrderableString { get { return "RIGHT('00000000' + CAST({0} AS varchar(8)),8)"; } } public virtual string ConvertDateToOrderableString { get { return "CONVERT(varchar, {0}, 102)"; } } + public virtual string ConvertDecimalToOrderableString { get { return "RIGHT('0000000000000000000000000' + CAST({0} AS varchar(25)),25)"; } } } } \ No newline at end of file