sql server里将十六进制转换成十进制
在网上找了很多,总是不知道怎么用,于是自己写了一个:
declare @strHex char(5),
@len int,
@intOut int,
@i int,
@charint int
set @strHex = '20'
set @len = len(rtrim(@strHex))
set @i = 1
set @intOut = 0
while @i <= @len
begin
set @charint = case substring(upper(rtrim(ltrim(@strHex))),@i,1)
when 'A' then 10
when 'B' then 11
when 'C' then 12
when 'D' then 13
when 'E' then 14
when 'F' then 15
else substring(@strHex,@i,1)
end
set @intOut = @intOut +@charint * power(16, @len-@i)
set @i = @i + 1
end
print @intOut
由于要批量修改,帮写成了游标的形式:
use pubs
declare @strHex char(5),
@len int,
@intOut int,
@i int,
@charint int,
@keyname char(50)
declare hextoint cursor for
select rtrim(col001),rtrim(col002) from vv
open hextoint
fetch next from hextoint into @keyname,@strHex
while @@fetch_status =0
begin
set @len = len(rtrim(@strHex))
set @i = 1
set @intOut = 0
while @i <= @len
begin
set @charint = case substring(upper(rtrim(ltrim(@strHex))),@i,1)
when 'A' then 10
when 'B' then 11
when 'C' then 12
when 'D' then 13
when 'E' then 14
when 'F' then 15
else substring(@strHex,@i,1)
end
set @intOut = @intOut +@charint * power(16, @len-@i)
set @i = @i + 1
end
update vv set col002 = @intout where col001 = rtrim(@keyname)
--print @intOut
fetch next from hextoint into @keyname,@strHex
end
close hextoint
deallocate hextoint
记以下留作以后参考吧。
相关文档:
若要收缩特定数据库的所有数据和日志文件,请执行 DBCC SHRINKDATABASE 命令。若要一次收缩一个特定数据库中的一个数据或日志文件,请执行 DBCC SHRINKFILE
命令。
若要查看数据库中当前的可用(未分配)空间量,请运行 sp_spaceused
。
可在进程中的任一点停止 DBCC SHRINKDATABASE 操作,任何已完成的工作都将保留。 ......
本译文采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议发布,转载请保留此信息
译者:马齿苋 | 链接:http://www.dbabeta.com/2010/oracle-sql-server-comparison-i.html
作者:Sadequl Hussain | 原文:http://www.sql-server-performance.com/articles/dba/oracle_sql_server_comparison_p1.aspx
一 ......
sql server 2000导出表结构
1.
SELECT
表名=case when a.colorder=1 then d.name else '' end,
表说明=case when a.colorder=1 then isnull(f.value,'') else '' end,
字段序号=a.colorder,
字段名=a.name,
标识=case when COLUMNPROPERTY( a.id, ......
SELECT TOP (100) PERCENT
CASE WHEN a.colorder = 1 THEN d .name ELSE '' END AS 表名, CASE WHEN a.colorder = 1 THEN isnull(f.value, '')
ELSE '' END AS 表说明, a.colorder AS 字段序号, a.name AS 字段名, CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity')
= 1 THEN '√' ELSE '' END AS 标识, CA ......
一直以来对于SQL的查询都没怎么在意,今天遇到一个关于左连接查询的问题。
Select uId ,uName,dpName
from users
left join dpart
on users.pid=1 where u.pid=dpart.pid
结果是把users所有结果查询出来,而不是pid为1的用户
原来on后面必须放连接条件,其他的条件放在where里面
感谢夏欢提出 ......