SQL转换全角和半角函数
- 格式:docx
- 大小:14.03 KB
- 文档页数:2
使用C++编写一个函数来实现将半角字符转换为全角字符,以下是一个示例:```cpp#include <iostream>#include <string>std::string halfToFullWidth(const std::string& input) { std::string output;for (char c : input) {if (c >= 0x21 && c <= 0x7E) {output += static_cast<char>(c + 0xfee0);} else {output += c;}}return output;}int main() {std::string halfWidth = "Hello, 半角字符!";std::string fullWidth = halfToFullWidth(halfWidth);std::cout << "半角字符: " << halfWidth << std::endl; std::cout << "转换为全角字符: " << fullWidth << std::endl;return 0;}```这段代码定义了一个名为`halfToFullWidth`的函数,它接受一个`std::string`类型的参数,并将其中的半角字符转换为全角字符。
在`main`函数中,你可以使用这个函数来将字符串中的半角字符转换为全角字符,并输出结果。
一、介绍在日常工作中,我们经常会遇到需要在全角和半角之间进行转换的情况。
全角字符和半角字符在计算机中表示的方式不同,因此需要特定的函数来进行转换。
在Oracle数据库中,提供了一些函数来实现全角和半角之间的转换,本文将就这些函数进行详细介绍和使用方法。
二、全角和半角的概念1. 全角字符:全角字符是指占用两个半角字符位置的字符,通常是指中文、日文、韩文等字符。
2. 半角字符:半角字符是指占用一个字符位置的字符,通常是指英文字母、数字、符号等字符。
三、函数介绍在Oracle数据库中,可以使用以下函数来进行全角和半角之间的转换:1. ASCIISTR()函数:将全角字符转换为对应的Unicode编码。
2. UTL_RAW.CAST_TO_VARCHAR2()函数:将Unicode编码转换为对应的半角字符。
3. ASCIISTR()函数与UTL_RAW.CAST_TO_VARCHAR2()函数的结合使用:实现全角字符到半角字符的转换。
四、ASCISITR()函数的使用方法ASCISITR()函数可以将全角字符转换为对应的Unicode编码,使用方法如下:```sqlSELECT ASCIISTR('全角字符') FROM DUAL;```执行以上SQL语句,将会返回“\5168\89C9\5B57\7B26”这样的Unicode编码,表示输入的全角字符对应的Unicode编码。
五、UTL_RAW.CAST_TO_VARCHAR2()函数的使用方法UTL_RAW.CAST_TO_VARCHAR2()函数可以将Unicode编码转换为对应的半角字符,使用方法如下:```sqlSELECTUTL_RAW.CAST_TO_VARCHAR2(HEXTORAW('xxxC95B577B26')) FROM DUAL;```执行以上SQL语句,将会返回“全角字符”这样的半角字符,表示输入的Unicode编码对应的全角字符。
oracle sql常用函数Oracle SQL中有许多常用的函数,它们可以用于数据处理、计算和转换。
以下是一些常用的Oracle SQL函数:1. 字符串函数:`SUBSTR(str, start, length)`: 返回字符串str中从start位置开始的长度为length的子串。
`UPPER(str)`: 将字符串str转换为大写。
`LOWER(str)`: 将字符串str转换为小写。
`INSTR(str, substr)`: 返回子串substr在字符串str中第一次出现的位置。
2. 数值函数:`ROUND(num, decimal_places)`: 对num进行四舍五入,保留decimal_places位小数。
`TRUNC(num, decimal_places)`: 对num进行截断,保留decimal_places位小数。
`MOD(n, m)`: 返回n除以m的余数。
3. 日期函数:`SYSDATE`: 返回当前日期和时间。
`TO_CHAR(date, format)`: 将日期date按照指定的格式转换为字符串。
`MONTHS_BETWEEN(date1, date2)`: 返回date1和date2之间相差的月数。
4. 转换函数:`TO_NUMBER(str)`: 将字符串str转换为数值型。
`TO_DATE(str, format)`: 将字符串str按照指定的格式转换为日期型。
5. 聚合函数:`SUM(column)`: 计算指定列的总和。
`AVG(column)`: 计算指定列的平均值。
`COUNT(column)`: 计算指定列的行数。
6. 条件函数:`CASE WHEN condition THEN result1 ELSE result2 END`: 根据条件返回不同的结果。
以上列举的函数只是Oracle SQL中的一部分常用函数,还有许多其他函数可以根据具体的需求进行选择和应用。
qlserver全角转半角函数在SQL Server 中,没有内置的函数来进行全角转半角的转换。
然而,你可以创建自定义的函数来实现这个功能。
下面是一个示例的SQL Server 用户定义函数(User Defined Function,UDF),用于将字符串中的全角字符转换为半角字符:CREATE FUNCTION dbo.FullWidthToHalfWidth(@input VARCHAR(MAX))RETURNS VARCHAR(MAX)ASBEGINDECLARE @output VARCHAR(MAX) = ''DECLARE @char VARCHAR(1)DECLARE @code INTDECLARE @i INT = 1WHILE @i <= LEN(@input)BEGINSET @char = SUBSTRING(@input, @i, 1)SET @code = UNICODE(@char)--如果字符是全角字符范围(65281 - 65374)IF @code >= 65281 AND @code <= 65374BEGINSET @char = CHAR(@code - 65248) --转换为对应的半角字符ENDSET @output = @output + @charSET @i = @i + 1ENDRETURN @outputEND使用该函数的示例:SELECT dbo.FullWidthToHalfWidth('HelloWorld') AS ConvertedString输出结果为:"Hello World",将全角字符转换为了半角字符。
请注意,该示例函数仅支持将字符串中的全角字符转换为半角字符,如果需要支持其他字符的转换,你可能需要根据具体需求进行修改。
SQL语句转换格式函数Cast、Convert CAST和CONVERT都经常被使⽤。
特别提取出来作为⼀篇⽂章,⽅便查找。
CAST、CONVERT都可以执⾏数据类型转换。
在⼤部分情况下,两者执⾏同样的功能,不同的是CONVERT还提供⼀些特别的⽇期格式转换,⽽CAST没有这个功能。
既然CONVERT包括了CAST的所有功能,⽽且CONVERT还能进⾏⽇期转换,那么为什么需要使⽤CAST呢?实际上,这是为了ANSI/ISO兼容。
CAST是ANSI兼容的,⽽CONVERT则不是。
语法: CAST (expression AS data_type [ (length ) ]) CONVERT (data_type [ ( length ) ] , expression [ , style ]) ⽰例: SELECT 'AB' + 1 --此语句报错,在将 varchar 值 'AB' 转换成数据类型 int 时失败。
SELECT 'AB' + CAST(1 AS varchar) --输出 AB1 SELECT 'AB' + CONVERT(varchar,1) --输出 AB1 CAST和CONVERT都能转换时间: SELECT CONVERT(DateTime,'2011-07-11') --输出 2011-07-11 00:00:00.000 SELECT CAST('2011-07-11' AS DateTime) --输出 2011-07-11 00:00:00.000 但是时间转字符串,CAST没有CONVERT这么多花样: SELECT CONVERT(varchar,GETDATE(),5) --输出 01-07-13 SELECT CONVERT(varchar,GETDATE(),111) --输出 2013/07/01 SELECT CONVERT(varchar,GETDATE(),1) --输出 07/01/13 SELECT CAST(GETDATE() AS varchar) --输出 07 1 2013 9:56PM。
SQL Server 中转换字符集的函数1. 概述在数据库开发中,我们经常会遇到需要转换字符集的情况。
SQL Server 提供了一些函数来帮助我们实现字符集的转换。
在本文中,我们将详细介绍 SQL Server 中用于转换字符集的函数,包括使用方法、示例和注意事项。
2. SQL Server 中的字符集在使用 SQL Server 时,我们经常会遇到不同的字符集。
常见的字符集包括 UTF-8、UTF-16、GB2312、GBK 等。
不同的字符集可能会对数据的存储和展示产生影响,因此我们需要对数据进行字符集的转换。
3. 转换字符集的函数SQL Server 提供了几个函数来帮助我们实现字符集的转换,包括CONVERT、CAST 和 COLLATE 三个主要的函数。
4. CONVERT 函数CONVERT 函数可以将一个表达式的数据类型转换为另一个数据类型。
在字符集转换中,我们可以使用 CONVERT 函数来将一个字符集转换为另一个字符集。
例如:```sqlSELECT CONVERT(nvarchar, column_name) AS new_column FROM table_name;```在这个例子中,我们将表中某一列的字符集从原有的字符集转换为nvarchar 类型的字符集。
5. CAST 函数CAST 函数和 CONVERT 函数的作用类似,都可以实现数据类型的转换。
在字符集转换中,我们也可以使用 CAST 函数来实现字符集的转换。
例如:```sqlSELECT CAST(column_name AS nvarchar) AS new_column FROM table_name;```6. COLLATE 函数COLLATE 函数可以指定一个特定的字符集用于排序和比较操作。
在字符集转换中,我们可以使用 COLLATE 函数来指定要使用的字符集。
例如:```sqlSELECT column_nameFROM table_nameORDER BY column_name COLLATE Chinese_PRC_CS_AS;```在这个例子中,我们指定了 Chinese_PRC_CS_AS 字符集用于对查询结果进行排序。
PB中全角字符和半角字符之间的转换相关解决方案一、将字符串中的半角字符转换成全角字符(函数)//函数功能:将字符串中的半角字符转换成全角字符//入口参数:in_str——准备进行转换的半角字符串类型string//返回值:转换成功的全角字符串类型stringstring c_return=""long l0,l1,l2,l3,l4,i,c_leng,l_asci=1c_leng=len(in_str)do while i<=c_lengl_asc=asc(in_str)if l_asc<=128 thenif l_asc>=33 and l_asc<=126 thenl1=int((l_asc+41856)/(16*16*16))l0=mod((l_asc+41856),(16*16*16))l2=int(l0/(16*16))l0=mod(l0,(16*16))l3=int(l0/16)l4=mod(l0,16)c_return=c_return+char(l1*16+l2)+char(l3*16+l4)elsec_return=c_return+left(in_str,1)end ifin_str=replace(in_str,1,1,"")i=i+1elsec_return=c_return+left(in_str,2)in_str=replace(in_str,1,2,"")i=i+2end ifloopreturn c_return二、中英文输入法的切换及全角半角切换切换中英文输入法及全角/半角?问题描述:如何切换中英文输入法及全角/半角、中英文字符等?解决方案:1、声明外部函数:function boolean ImmSimulateHotKey (UnsignedLong hWnd,UnsignedLong dwHotKeyID) library "IMM32.dll"function unsignedlong GetKeyboardLayout (unsignedlong wLayout)library "user32.dll"function boolean ImmIsIME(unsignedLong hklKeyboardLayout)library "IMM32.DLL"2、在一个按钮里写:long ll_hwndll_hwnd = handle(sle_1)If not ImmIsIME(GetKeyboardLayout(0)) ThenImmSimulateHotKey(ll_hwnd,16)End IfImmSimulateHotKey(ll_hwnd,17)3、测试:运行后在TEXT中先输入逗号,均为半角,再点按钮后再输入逗号,均为全角三、自动切换输入法比如把焦点切换到一个编辑框时,如何自动切换到你设置的输入法。
sql 全角半角转换函数
SQL是一种非常重要的编程语言,在数据库管理系统中广泛应用。
在SQL的使用过程中,我们有时需要进行全角半角转换,这就需要使
用转换函数。
SQL提供了两种不同的转换函数,分别是“CONVERT”和“CAST”。
其中,“CONVERT”函数将一个数据类型转换为另一个数据类型,并支
持各种格式;而“CAST”函数只支持简单数据类型之间的转换,如整
数和字符串之间的转换等。
半角字符指单字节字符,相当于英文字母、数字和符号等;而全
角字符则是双字节字符,通常用于汉字。
在日常生活中,我们经常遇
到需要进行半角全角转换的情况,比如在数据库中写入中文字符,需
要将其转换为全角字符。
在SQL中,我们可以使用UNICODE函数将字符转换为其对应的Unicode码,然后再进行半角全角转换。
具体来说,将半角字符的Unicode码加上65248,就能够将其转换为全角字符的Unicode码。
反之,将全角字符的Unicode码减去65248,就能够将其转换为半角字符的Unicode码。
除了UNICODE函数外,SQL还提供了另外几种函数用于半角全角转换,比如“CHAR”函数、“ASCII”函数和“NCHAR”函数等。
综上所述,SQL中的半角全角转换函数在实际应用中非常重要。
在进行半角全角转换时,我们可以选择使用UNICODE函数以及其他相关函数,以确保数据的准确性和一致性。
同时,在实际使用过程中,还需根据实际情况进行数据类型转换和格式化,以达到更好的效果。
sql半角转全角函数SQL是一种用于管理关系型数据库的编程语言,它的语法规则比较严格,需要注意各种细节。
其中一个常见的问题就是半角和全角字符的转换,这在数据处理中很常见。
为了解决这个问题,可以使用SQL中的半角转全角函数。
半角和全角字符的区别在于,半角字符只占一个字符宽度,而全角字符占两个字符宽度。
在日常生活中,我们常见的半角字符有数字、字母、符号等,而全角字符包括中文、日文、韩文等字符。
在数据库中,这些字符经常被用作查询条件、索引、排序等操作。
SQL中的半角转全角函数是一个将半角字符转换为全角字符的工具,它可以将单个字符或整个字符串中的所有半角字符转换为全角字符。
在MySQL中,该函数的语法如下:```SELECT CONCAT_WS(‘’, map.fullwidth, map.halfwidth) AS full_stringFROM (SELECT ‘0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~’ AS halfwidth,‘0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~’ AS fullwidth) AS mapWHERE halfwidth = ‘A’;```该函数接受一个字符串参数,并返回全角版本的字符串。
例如,假设我们有一个包含半角字符的字符串“Hello World”,我们可以使用以下代码将其转换为全角字符串:```SELECT CONVERT(CONVERT('Hello World' USING latin1) USING gb2312) AS fullwidth_string;```该代码将字符串转换为latin1编码,然后再将其转换为gb2312编码。
半⾓、全⾓判断及转换在计算机屏幕上,⼀个汉字要占两个英⽂字符的位置,⼈们把⼀个英⽂字符所占的位置称为"半⾓",相对地把⼀个汉字所占的位置称为"全⾓"。
在汉字输⼊时,系统提供"半⾓"和"全⾓"两种不同的输⼊状态,但是对于英⽂字母、符号和数字这些通⽤字符就不同于汉字,在半⾓状态它们被作为英⽂字符处理;⽽在全⾓状态,它们⼜可作为中⽂字符处理。
半⾓和全⾓切换⽅法:单击输⼊法⼯具条上的按钮或按键盘上的Shift+Space键来切换。
1、全⾓:指⼀个字符占⽤两个标准字符位置。
汉字字符和规定了全⾓的英⽂字符及国标GB2312-80中的图形符号和特殊字符都是全⾓字符。
⼀般的系统命令是不⽤全⾓字符的,只是在作⽂字处理时才会使⽤全⾓字符。
2、半⾓:指⼀字符占⽤⼀个标准的字符位置。
通常的英⽂字母、数字键、符号键都是半⾓的,半⾓的显⽰内码都是⼀个字节。
在系统内部,以上三种字符是作为基本代码处理的,所以⽤户输⼊命令和参数时⼀般都使⽤半⾓。
3、全⾓与半⾓各在什么情况下使⽤?全⾓占两个字节,半⾓占⼀个字节。
半⾓全⾓主要是针对标点符号来说的,全⾓标点占两个字节,半⾓占⼀个字节,⽽不管是半⾓还是全⾓,汉字都还是要占两个字节。
在编程序的源代码中只能使⽤半⾓标点(不包括字符串内部的数据)在不⽀持汉字等语⾔的计算机上只能使⽤半⾓标点(其实这种情况根本就不存在半⾓全⾓的概念)对于⼤多数字体来说,全⾓看起来⽐半⾓⼤,当然这不是本质区别了。
4、全⾓和半⾓的区别全⾓就是字母和数字等与汉字占等宽位置的字。
半⾓就是ASCII⽅式的字符,在没有汉字输⼊法起做⽤的时候输⼊的字母数字和字符都是半⾓的。
在汉字输⼊法出现的时候,输⼊的字母数字默认为半⾓,但是标点则是默认为全⾓,可以通过⿏标点击输⼊法⼯具条上的相应按钮来改变。
全⾓状态下字母、数字符号等都会占两个字节的位置,也就是⼀个汉字那么宽,半⾓状态下,字母数字符号⼀般会占⼀个字节,也就是半个汉字的位置,全⾓半⾓对汉字没有影响。
全⾓字符与半⾓字符介绍及转换⼀、全⾓字符全⾓字符(Full-width characters)指⼀个字符占⽤两个标准字符位置,汉字字符和规定了全⾓的英⽂字符及国标中的图形符号和特殊字符都是全⾓字符。
⼆、半⾓字符半⾓字符(Half-width characters)占⽤1个字节位置,可以由ASCII码表⽰三、半⾓字符(标准字符)出现的原因在计算机系统中,所有的数据在存储和运算时都要使⽤⼆进制数表⽰(因为计算机⽤⾼电平和低电平分别表⽰1和0);我们可以⽤我们的语⾔中的唯⼀符号映射唯⼀⼀个⼆进制数,这样我们就能在计算机中表达⾃⼰的意思了,⽐如⽤数字0来表⽰⼆进制数0011 0000 ,每个⼈都可以按照⾃⼰的想法设计⼀条映射规则(编码)。
不过如果这样的话不同编码规则之间的交流就有很⼤的障碍了,不同的编码类似于各地的⽅⾔,没有经过学习就⽆法理解对⽅编码的意思。
为了统⼀规范 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)出现了。
ASCII是基于拉丁字母的⼀套电脑编码系统,主要⽤于显⽰现代英语和其他西欧语⾔。
它是最通⽤的信息交换标准,并等同于国际标准ISO/IEC 646。
ASCII第⼀次以规范标准的类型发表是在1967年,最后⼀次更新则是在1986年,到⽬前为⽌共定义了128个字符。
四、ASCII码ASCII 码使⽤指定的7 位或8 位⼆进制组合来表⽰128 或256 种可能的字符。
标准ASCII 码也叫基础ASCII码,使⽤7 位⼆进制数(剩下的1位⼆进制为0)来表⽰所有的⼤写和⼩写字母,数字0 到9、标点符号,以及在美式英语中使⽤的特殊控制字符。
其中0~31及127(共33个)是控制字符或通信专⽤字符(其余为可显⽰字符)。
在标准ASCII中,其最⾼位(b7)⽤作奇偶校验。
所谓奇偶校验,是指在代码传送过程中⽤来检验是否出现错误的⼀种⽅法,分为奇校验和偶校验两种。
sql半角转全角函数SQL语言作为一种基于关系型数据库管理系统的查询语言,是数据科学家和数据库管理者必不可少的工具之一。
在日常的开发工作中,我们经常需要对数据进行格式转换,其中包括半角转全角这类操作。
因此,在本文中,我将为大家介绍SQL中半角转全角的函数。
一、什么是半角和全角?在日常生活和工作中,我们常常使用半角和全角的字符。
半角字符是指英文字符、数字、符号等,它们的宽度通常只占用一个字符位置,而全角字符则是指中文字符、日文字符等,它们的宽度通常占用两个字符位置。
二、SQL中半角转全角函数的实现在SQL中,我们可以使用UNISTR函数实现半角转全角操作。
具体实现方法如下:SELECT unistr('FF' || ascii(substr('abc', level, 1)) + 80) as '全角字符'FROM dualCONNECT BY level <= length('abc');在上面的代码中,我们使用了substr函数,从字符串‘abc’中逐个取出每个字符,并将其转换为全角字符。
在进行转换之前,我们需要将字符的ASCII码值添加80,然后使用UNISTR函数将其转换为对应的全角字符。
三、半角转全角函数的应用场景在日常工作中,我们需要使用半角转全角函数的场景非常多,下面列出了几个典型的应用场景。
1. 数据库中存储的中文字符集为半角字符集,但是业务需求需要将文本显示为全角字符,这时我们可以使用半角转全角函数将数据进行格式转换。
2. 在电商平台中,商品的标题和描述通常需要进行全角转半角操作,以便于在搜索引擎中更好地展现和匹配。
3. 在一些特殊的业务场景中,需要将用户输入的半角字符转换为全角字符,以保证数据的一致性和完整性。
四、总结在SQL开发中,半角转全角函数是非常重要的一种格式转换函数。
通过使用UNISTR函数,我们可以快速地将数据库中存储的半角字符转换为全角字符。
sqlserver类型转换整型函数
SQLServer中有多种用于将其他数据类型转换为整型的函数,这些函数可帮助我们在处理数据时更加方便地进行计算和比较。
下面是几个常用的类型转换整型函数:
1. CAST函数:将其他数据类型转换为整型。
语法为:
CAST(expression AS data_type [ ( length ) ] )。
2. CONVERT函数:也可将其他数据类型转换为整型。
语法为:CONVERT(data_type [ ( length ) ], expression, style)。
3. STR函数:将数字或日期等数据类型转换为字符串类型,并可指定格式。
语法为:STR(expression[, length[, decimal]])。
4. PARSE函数:将字符串转换为整型,需要指定数据格式。
语法为:PARSE (string_value AS data_type [ USING culture ] )。
以上这些函数都可用于将其他数据类型转换为整型,但使用时需要注意数据类型、格式等细节,以保证转换结果的正确性。
- 1 -。
sqlserver类型转换整型函数
在SQL Server中,类型转换函数是一种能够将一种数据类型转换成另一种数据类型的功能。
其中,将各种数据类型转换为整型是很常见的操作。
在SQL Server中,有多种不同的类型转换函数可以完成此任务。
最常见的数据类型转换整型函数是CAST。
它可以将其他数据类型转换为整型,如CHAR、VARCHAR、DATETIME等。
只需要指定要转换的数据类型及转换后的整型,就可以使用该函数来完成类型转换。
此外,还有一种常用的类型转换整型函数,即CONVERT。
这个函数可以用来将各种数据类型转换为整型。
通过指定要转换的数据类型及转换后的整型,就可以实现数据类型转换。
另外,还有一种类型转换函数,用于将定义为NUMERIC的数据类型转换为整型。
这种函数叫做TRANSFORM,它可以将NUMERIC类型的数据转换为bigint、int、smallint或tinyint类型的整型数据。
总而言之,SQL Server提供了一系列的类型转换整型函数,可以将不同类型的数据转换为整型,从而提高工作效率。
因此,应该掌握这些函数的使用方法,以方便完成数据转换任务。
全⾓和半⾓相互转换 ⽬前,我们接触的汉字编码主要包括GBK和GB2312。
其中,GB2312⼜称国标码,它是⼀个简化字的编码规范,也包括其他的符号、字母、⽇⽂假名等,共7445个图形字符,其中汉字占6763个。
我们平时说6768个汉字,实际上⾥边有5个编码为空⽩,所以总共有6763个汉字。
GB2312规定“对任意⼀个图形字符都采⽤两个字节表⽰,每个字节均采⽤七位编码表⽰”,习惯上称第⼀个字节为“⾼字节”,第⼆个字节为“低字节”。
GB2312中汉字的编码范围为,第⼀字节0xB0-0xF7(对应⼗进制为176-247),第⼆个字节0xA0-0xFE(对应⼗进制为160-254)。
⽽GBK是GB2312的扩展,是向上兼容的,GB2312中的汉字的编码与GBK中汉字的相同,只不过GBK中还包含繁体字的编码。
GBK中每个汉字仍然占⽤两个字节,第⼀个字节的范围是0x81-0xFE(即129-254),第⼆个字节的范围是0x40-0xFE(即64-254)。
GBK 中有码位23940个,包含汉字21003个。
因此,下⾯的代码也是在使⽤GB2312或GBK编码的环境下测试通过。
//C语⾔//全⾓转半⾓void sbc_to_dbc(char *sbc, char *dbc){for(; *sbc; ++sbc){if((*sbc & 0xff) == 0xA1 && (*(sbc + 1) & 0xff) == 0xA1) //全⾓空格{*dbc++ = 0x20;++sbc;}else if((*sbc & 0xff) == 0xA3 && (*(sbc + 1) & 0xff) >= 0xA1 && (*(sbc + 1) & 0xff) <= 0xFE) //ASCII码中其它可显⽰字符*dbc++ = *++sbc - 0x80;else{if(*sbc < 0) //如果是中⽂字符,则拷贝两个字节*dbc++ = *sbc++;*dbc++ = *sbc;}}*dbc = 0;}//半⾓转全⾓void dbc_to_sbc(char *dbc, char *sbc){for(; *dbc; ++dbc){if((*dbc & 0xff) == 0x20) //半⾓空格{*sbc++ = 0xA1;*sbc++ = 0xA1;}else if((*dbc & 0xff) >= 0x21 && (*dbc & 0xff) <= 0x7E){*sbc++ = 0xA3;*sbc++ = *dbc + 0x80;}else{if(*dbc < 0) //如果是中⽂字符,则拷贝两个字节*sbc++ = *dbc++;*sbc++ = *dbc;}}*sbc = 0;}//C++中的半⾓、全⾓字符转换//全⾓字符占⽤2个字符位置,半⾓字符(Half-width characters)占⽤1个字符位置。
SQL中CONVERT转化函数的⽤法格式:CONVERT(data_type,expression[,style])说明:此样式⼀般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才⽤到.例⼦:SELECT CONVERT(varchar(30),getdate(),101) now结果为:now---------------------------------------|09/15/2001===================================================================style数字在转换时间时的含义如下:------------------------------------------------------------------------------------------------------------Style(2位表⽰年份) | Style(4位表⽰年份) |输⼊输出格式------------------------------------------------------------------------------------------------------------0|100| mon dd yyyy hh:miAM(或PM)------------------------------------------------------------------------------------------------------------1|101美国| mm/dd/yy------------------------------------------------------------------------------------------------------------2|102 ANSI | yy-mm-dd------------------------------------------------------------------------------------------------------------3|103英法| dd/mm/yy------------------------------------------------------------------------------------------------------------4|104德国| dd.mm.yy------------------------------------------------------------------------------------------------------------5|105意⼤利| dd-mm-yy------------------------------------------------------------------------------------------------------------6|106| dd mon yy------------------------------------------------------------------------------------------------------------7|107| mon dd,yy------------------------------------------------------------------------------------------------------------8|108| hh:mm:ss------------------------------------------------------------------------------------------------------------9|109| mon dd yyyy hh:mi:ss:mmmmAM(或PM)------------------------------------------------------------------------------------------------------------10|110美国| mm-dd-yy------------------------------------------------------------------------------------------------------------11|111⽇本| yy/mm/dd------------------------------------------------------------------------------------------------------------12|112 ISO | yymmdd------------------------------------------------------------------------------------------------------------13|113欧洲默认值| dd mon yyyy hh:mi:ss:mmm(24 ⼩时制)------------------------------------------------------------------------------------------------------------14|114| hh:mi:ss:mmm(24⼩时制)------------------------------------------------------------------------------------------------------------20|120 ODBC 规范| yyyy-mm-dd hh:mi:ss(24⼩时制)------------------------------------------------------------------------------------------------------------21|121| yyyy-mm-dd hh:mi:ss:mmm(24⼩时制)------------------------------------------------------------------------------------------------------------语句及查询结果:SELECT CONVERT(varchar(100), GETDATE(), 0): 0516200610:57AMSELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/06SELECT CONVERT(varchar(100), GETDATE(), 2): 06.05.16SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/06SELECT CONVERT(varchar(100), GETDATE(), 4): 16.05.06SELECT CONVERT(varchar(100), GETDATE(), 5): 16-05-06SELECT CONVERT(varchar(100), GETDATE(), 6): 160506 SELECT CONVERT(varchar(100), GETDATE(), 7。
create table tb(col nvarchar(20))
insert into tb values(N'全角')
insert into tb values(N'半角')
go
CREATE FUNCTION f_Convert(
@str NVARCHAR(4000), --要转换的字符串
@flag bit --转换标志,0转换成半角,1转换成全角
)RETURNS nvarchar(4000)
AS
BEGIN
DECLARE @pat nvarchar(8),@step int,@i int,@spc int
IF @flag=0
SELECT @pat=N'%[!-~]%',@step=-65248,
@str=REPLACE(@str,N'',N' ')
ELSE
SELECT @pat=N'%[!-~]%',@step=65248,
@str=REPLACE(@str,N' ',N'')
SET @i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
WHILE @i>0
SELECT @str=REPLACE(@str,
SUBSTRING(@str,@i,1),
NCHAR(UNICODE(SUBSTRING(@str,@i,1))+@step)) ,@i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str) RETURN(@str)
END
GO
select col 转换前, dbo.f_Convert(col , 0) 转换后from tb
drop table tb
drop function dbo.f_Convert
/*
转换前转换后
-------------------- ----------
全角全角
半角半角
(所影响的行数为2 行)
*/
其中:N标识插入unicode字符串,以两个字节保存,nvarchar就是保存unicode字符到字段内容中,这样可以防止中文乱码;而varchar则是以一个字节保存,不支持中文的操作系统就会出现中文乱码现象。