怎樣在SQL內將漢字的機器碼折分出來

rodyhd 2004-03-31 11:43:49
function HZOffset(fHZ: string): integer;
begin
if length(fHZ) >= 2 then
Result := (Ord(fHZ[1]) - 161) * 94 + (Ord(fHZ[2]) - 161)
else
Result := -1;
end;
怎樣將上面DELPHI計算漢字機器碼的代碼在SQL中實現, 謝謝各位大哥
...全文
28 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
rodyhd 2004-03-31
  • 打赏
  • 举报
回复
TO: zjcxc(: 邹建 :)
ORD 函數相當于 ASCII函數
rodyhd 2004-03-31
  • 打赏
  • 举报
回复
不好意思, 可能是我的問題問得不夠明白, 我的意思就是要在SQL內部取得指定的某個漢字的機器碼,也就是說一個漢字是由兩個機器碼組成, 我想分別得到這兩個機器碼
caiyunxia 2004-03-31
  • 打赏
  • 举报
回复
建立对照表
1.运行附件中的“输入法生成器”,或C:\WINNT\system32\dllcache\imegen.exe
2.在输入法生成器中点击“逆转换”页,点击“打开”按钮,选择C:\WINNT\system32\WINPY.MB,点击“逆转换”按钮转换即可
当然,什么“五笔”呀、“智能ABC”呀,“逆转换”都能够得到相应的txt
zjcxc 元老 2004-03-31
  • 打赏
  • 举报
回复
没用过delphi,不知道你的ord这些函数的作用
netcoder 2004-03-31
  • 打赏
  • 举报
回复
真不知道,关注
rodyhd 2004-03-31
  • 打赏
  • 举报
回复
謝謝zjcxc(: 邹建 :) 和 pbsql(风云) 兩位大哥,
感謝各位大哥的關心和幫助, 小弟要的就是這個了, 呵呵
pbsql 2004-03-31
  • 打赏
  • 举报
回复
CREATE FUNCTION [dbo].[HZOffset] (@fHZ varchar(10))
RETURNS int
AS
begin
declare @Result int
if datalength(@fHZ)>= 2
set @Result=(cast(cast(@fHZ as varbinary) as int)/256-161)*94+(cast(cast(@fHZ as varbinary) as int)%256-161)
else
set @Result=-1
return @Result
end
zjcxc 元老 2004-03-31
  • 打赏
  • 举报
回复
第一个结果,用在十六进制软件看到的结果是一样的.
zjcxc 元老 2004-03-31
  • 打赏
  • 举报
回复
--还是这个?


select cast((N'中') as varbinary)

--结果:0x2D4E
zjcxc 元老 2004-03-31
  • 打赏
  • 举报
回复
--你要得到的是这个吗?

select cast(('中') as varbinary)

--结果:0xD6D0
realgz 2004-03-31
  • 打赏
  • 举报
回复
同楼上
Rotaxe 2004-03-31
  • 打赏
  • 举报
回复
如果是nchar或nvarchar

可以用UNICODE
按照 Unicode 标准的定义,返回输入表达式的第一个字符的整数值。

语法
UNICODE ( 'ncharacter_expression' )

参数
'ncharacter_expression'

是 nchar 或 nvarchar 表达式。

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧