相关疑难解决方法(0)

为什么varbinary而不是varchar

可能重复:
在这里使用varbinary over varchar有什么好处?

请看一下这张表:

http://www.mediawiki.org/wiki/Manual:Logging_table

正如你可以看到维基百科使用varbinary而不是varchar:

| log_type      | **varbinary**(32)       | NO   | MUL |                |
| log_action    | **varbinary**(32)       | NO   |     |                |
| log_timestamp | **binary**(14)          | NO   | MUL | 19700101000000 |
| log_user      | int(10) unsigned        | NO   | MUL | 0              |  
| log_user_text | **varbinary**(255)      |      |     |                |
Run Code Online (Sandbox Code Playgroud)

所有这些信息都是文本,为什么他们将它们保存为二进制?

他们为所有表格执行此操作.

mysql sql database sql-server database-design

25
推荐指数
2
解决办法
3万
查看次数

如何使用SQL Server查询对"版本号"列进行排序

我想知道我们中间的SQL天才是否可以帮助我.

VersionNo在表Versions中有一列包含'版本号'值

VersionNo
---------
1.2.3.1
1.10.3.1
1.4.7.2
Run Code Online (Sandbox Code Playgroud)

等等

我想对此进行排序,但不幸的是,当我做一个标准时order by,它被视为一个字符串,所以订单出来了

VersionNo
---------
1.10.3.1
1.2.3.1
1.4.7.2
Run Code Online (Sandbox Code Playgroud)

以下内容,这就是我所追求的:

VersionNo
---------
1.2.3.1
1.4.7.2
1.10.3.1
Run Code Online (Sandbox Code Playgroud)

所以,我需要做的是按相反的顺序排序数字(例如在abcd中,我需要按d,c,b,a排序以获得正确的排序我们).

但我仍然坚持如何以GENERIC方式实现这一目标.当然,我可以使用各种SQL函数(例如分割字符串起来left,right,substring,len,charindex),但我不能保证总是会有4个部分的版本号.我可能有这样的列表:

VersionNo
---------
1.2.3.1
1.3
1.4.7.2
1.7.1
1.10.3.1
1.16.8.0.1
Run Code Online (Sandbox Code Playgroud)

可以,有没有人有任何建议?非常感谢您的帮助.

sql sql-server sorting sql-server-2000

12
推荐指数
1
解决办法
5915
查看次数