带字符的Mysql INT
我有一个mysql数据库,其中有一个字段“订单号”设置为INT在奇数情况下,订单号需要有一个尾随r,例如2100r。显然INT只接受数字,并正确排序数字ASC或DESC。如果我使用VARCHAR来克服此限制,它将正确接受尾随r字符,但不会正确排序数字顺序,有没有办法强制INT选项接受字符 您可以在MySQL中使用带字符的Mysql INT,mysql,int,varchar,Mysql,Int,Varchar,我有一个mysql数据库,其中有一个字段“订单号”设置为INT在奇数情况下,订单号需要有一个尾随r,例如2100r。显然INT只接受数字,并正确排序数字ASC或DESC。如果我使用VARCHAR来克服此限制,它将正确接受尾随r字符,但不会正确排序数字顺序,有没有办法强制INT选项接受字符 您可以在MySQL中使用CAST函数,但在表中插入新数据之前,最好使用类型转换将order\u number存储为int SELECT CAST(int_col AS CHAR); SELECT CAST(c
CAST
函数,但在表中插入新数据之前,最好使用类型转换将order\u number
存储为int
SELECT CAST(int_col AS CHAR);
SELECT CAST(char_col AS unsigned INTEGER);
您可以在MySQL中使用
CAST
函数,但在表中插入新数据之前,最好使用类型转换将order\u number
存储为int
SELECT CAST(int_col AS CHAR);
SELECT CAST(char_col AS unsigned INTEGER);
不,没有这样的选择
您可能应该使用
VARCHAR
列作为订单号,使用单独的列(可能是INT
)进行排序;根据插入和更新行时的订单号填充helper列。否,没有此类选项
您可能应该使用
VARCHAR
列作为订单号,使用单独的列(可能是INT
)进行排序;根据插入和更新行时的订单号填充帮助器列。如果其中任何一个包含字母,则需要将帐户ID存储为字符串。但只要字母总是后缀,就可以正确排序。无论AccountID值是否有前导空格,此操作都有效
SELECT *
FROM Account
ORDER BY CAST(AccountID as UNSIGNED INTEGER), AccountID
这将进行数字排序,然后通过词汇排序处理任何相等的数字
如果您希望将“r”订单显示在具有相同号码的朴素朋友面前,您可以执行以下操作:
SELECT *
FROM Account
ORDER BY CAST(AccountID as UNSIGNED INTEGER), AccountID DESC
如果任何帐户ID包含字母,则需要将其存储为字符串。但只要字母总是后缀,就可以正确排序。无论AccountID值是否有前导空格,此操作都有效
SELECT *
FROM Account
ORDER BY CAST(AccountID as UNSIGNED INTEGER), AccountID
这将进行数字排序,然后通过词汇排序处理任何相等的数字
如果您希望将“r”订单显示在具有相同号码的朴素朋友面前,您可以执行以下操作:
SELECT *
FROM Account
ORDER BY CAST(AccountID as UNSIGNED INTEGER), AccountID DESC
尝试使用这种方式将字符串转换为数字(数字\字符串*1),例如-
尝试使用这种方式将字符串转换为数字(数字\字符串*1),例如-
不,不可能。正如@Jon所说,没有其他选项可以强制
INT
字段保留VARCHAR
数据。不,不可能。正如@Jon所说,没有其他选项可以强制INT
字段保留VARCHAR
数据