我有一个表格,其中列名称为mappedcloumnname和fieldname,我的字段列包含address1
,address2
,city
,state
,customerid
,country
和mappedcolumn
contanins c1-c20
。我写了一个查询来根据mappedcolumn
名称对我的数据进行排序,但是得到的顺序是错误的
SELECT * FROM customermetadata
WHERE OrgID = in_orgid
ORDER BY MappedColumnName;
答案 0 :(得分:0)
如果您的列c1-c20
包含来自String(VarChar)
的值,那么它将在SQL中被视为oninput
,并且数据将无法正确排序。
答案 1 :(得分:0)
你可以尝试一下:
SELECT
*
FROM
customermetadata
WHERE
OrgID = in_orgid
ORDER BY CAST(SUBSTRING(MappedColumnName FROM 2) AS UNSIGNED);
注意:强>
我已从number
中提取MappedColumnName
并根据提取的数字对记录进行排序。
我已经创建了一个演示,其中表格只包含两列(id
和col
)。
col
列包含c1,c2,...
等值。
col
订购,请
See demo如果您通过从col
提取号码进行订购。
答案 2 :(得分:0)
你应该这样试试,
select * from customermetadata
where OrgID=in_orgid
Order By CAST(SUBSTR(MappedColumnName FROM 2 FOR LENGTH(MappedColumnName)) AS UNSIGNED); ;
注意:对于相同长度的数字,较长的数字也是一个较大的数字,您可以进行文本比较,因为'0' < '1' .... < '9'
它会缩短字母数字顺序。