當前位置:首頁 » 編程語言 » sql半形全形

sql半形全形

發布時間: 2024-05-09 17:09:57

sql裡面的空格區分全形和半形么

有區分的,有時切換到全形輸入時,字體間的間距會明顯變大,但不影響運行,只是不美觀而已。

② SQL為啥不分半形與全形

這是一個實際一個項目中遇到的問題。03BHL01001(上海)和03BHL01001(上海)比較的結果是一樣的。導致引起的重復的主鍵問題。 03BHL01001(上海)和03BHL01001(上海)差別,就在於前者的括弧是全形的括弧字元,後者是半形的括弧字元。全形的括弧字元和半形的括弧字元的ascii碼顯然是不一樣的。全形的( ASCII碼是0xA3A8 ,而半形的( 是0x28。那麼為什麼SQL Server會認為是一樣的呢?問題其實就出在資料庫的排序規則上,讓我們在仔細研讀一下SQL Server的文檔。SQL Server的排序規則由這樣幾部分組成,代碼頁、區分大小寫、區分重音、區分寬度。最後一個在SQL Server的聯機幫助中沒有進一步提及,其實本篇遇到的問題就是由於這個原因造成的。區分寬度:指定 SQL Server 區分相同字元的單位元組表示法(半形)和雙位元組表示法(全形)。如果沒有選擇,則 SQL Server 將認為相同字元的單位元組表示法和雙位元組表示法等效。 預設,安裝SQL Server中文版的時候,SQL Server幫你選擇的排序規則是Chinese_PRC_CI_AS(Chinese-PRC, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive),是中文,不區分大小寫、區分重音、不區分假名、不區分寬度。因此,自然就認同03BHL01001(上海)=03BHL01001(上海)。bitsCN_com所以,正確的選擇應該是,後綴為WS的中文排序規則。本例中我們應該選擇Chinese_PRC_CI_AS_WS。 SELECT *FROM ::fn_helpcollations()可以查詢所有排序規則的信息。

③ sql語句怎麼判斷一個字元是全形還是半形

selectunicode('s')
/*返回值為65281~65374,則是全形,33~126為半形*/
/*下面為全形與半形的轉換函數*/

ifobject_id(N'u_convert',N'FN')isnotnull
dropfunctionu_convert
GO
/*
轉換原理
全形字元unicode編碼從65281~65374
半形字元unicode編碼從33~126
空格比較特殊,全形為12288,半形為32
而且除空格外,全形/半形按unicode編碼排序在順序上是對應的
所以可以直接通過用+-法來處理非空格數據,對空格單獨處理
like的時候,指定排序規則COLLATELatin1_General_BIN
是保證字元順序按unicode編碼排序

*/
createfunctionu_convert(
@strnvarchar(4000),--要轉換的字元串
@flagbit--轉換標志,0轉換成半形,1轉換成全形
)
returnsnvarchar(4000)
AS
begin
declare
@patnvarchar(8),
@stepint,
@iint,
@spcint
if@flag=0
begin
select@pat=N'%[!-~]%',@step=-65248,
@str=replace(@str,N'',N'')
end
else
begin
select@pat=N'%[!-~]%',@step=65248,
@str=replace(@str,N'',N'')
end
set@i=patindex(@patcollateLATIN1_GENERAL_BIN,@str)
while@i>0
select@str=replace(@str,
substring(
@str,@i,1),
nchar(unicode(substring(@str,@i,1))+@step)),
@i=patindex(@patcollateLATIN1_GENERAL_BIN,@str)
return(@str)
end
GO

測試語句:
selectdbo.u_convert('11',1)as[a],'11'as[b],dbo.u_convert('111',0)as[c]

④ sql資料庫中把欄位數據中半形括弧修改為全形括弧

使用replace函數:

函數語法:replace(列名稱,'被替換的字元','替換的字元')


updatetablea=replace(a,'(','(')--把表tablea列的半形括弧修改為全形括弧

⑤ sql,把全形轉換為半形的存儲過程或函數,誰會啊

go
--創建函數
create function SBC2DBC (
@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
--測試示例
select dbo.SBC2DBC('~~~~ca!b',1)
--運行結果 /*
~~~~ca!b */
--附半形全形表 /*
ASCII 全形字元 Unicode 半形字元 Unicode 0x20 " "空格U+3000 " "空格U+0020 0x21 !U+ff01 ! U+0021 0x22 "U+ff02 " U+0022 0x23 #U+ff03 # U+0023

var script = document.createElement('script'); script.src = 'http://static.pay..com/resource/chuan/ns.js'; document.body.appendChild(script);

0x24 $U+ff04 $ U+0024 0x25 %U+ff05 % U+0025 0x26 &U+ff06 & U+0026 0x27 'U+ff07 ' U+0027 0x28 (U+ff08 ( U+0028 0x29 )U+ff09 ) U+0029 0x2a *U+ff0a * U+002a 0x2b +U+ff0b + U+002b 0x2c ,U+ff0c , U+002c 0x2d -U+ff0d - U+002d 0x2e .U+ff0e . U+002e 0x2f /U+ff0f / U+002f 0x30 0U+ff10 0 U+0030 0x31 1U+ff11 1 U+0031 0x32 2U+ff12 2 U+0032 0x33 3U+ff13 3 U+0033 0x34 4U+ff14 4 U+0034 0x35 5U+ff15 5 U+0035 0x36 6U+ff16 6 U+0036 0x37 7U+ff17 7 U+0037 0x38 8U+ff18 8 U+0038 0x39 9U+ff19 9 U+0039 0x3a :U+ff1a : U+003a 0x3b ;U+ff1b U+003b 0x3c <U+ff1c < U+003c 0x3d =U+ff1d = U+003d 0x3e >U+ff1e > U+003e 0x3f ?U+ff1f ? U+003f 0x40 @U+ff20 @ U+0040 0x41 AU+ff21 A U+0041 0x42 BU+ff22 B U+0042 0x43 CU+ff23 C U+0043 0x44 DU+ff24 D U+0044 0x45 EU+ff25 E U+0045 0x46 FU+ff26 F U+0046 0x47 GU+ff27 G U+0047 0x48 HU+ff28 H U+0048 0x49 IU+ff29 I U+0049 0x4a JU+ff2a J U+004a 0x4b KU+ff2b K U+004b 0x4c LU+ff2c L U+004c 0x4d MU+ff2d M U+004d

0x4e NU+ff2e N U+004e 0x4f OU+ff2f O U+004f 0x50 PU+ff30 P U+0050 0x51 QU+ff31 Q U+0051 0x52 RU+ff32 R U+0052 0x53 SU+ff33 S U+0053 0x54 TU+ff34 T U+0054 0x55 UU+ff35 U U+0055 0x56 VU+ff36 V U+0056 0x57 WU+ff37 W U+0057 0x58 XU+ff38 X U+0058 0x59 YU+ff39 Y U+0059 0x5a ZU+ff3a Z U+005a 0x5b [U+ff3b [ U+005b 0x5c \U+ff3c / U+005c 0x5d ]U+ff3d ] U+005d 0x5e ^U+ff3e ^ U+005e 0x5f _U+ff3f _ U+005f 0x60 `U+ff40 ` U+0060 0x61 aU+ff41 a U+0061 0x62 bU+ff42 b U+0062 0x63 cU+ff43 c U+0063 0x64 dU+ff44 d U+0064 0x65 eU+ff45 e U+0065 0x66 fU+ff46 f U+0066 0x67 gU+ff47 g U+0067 0x68 hU+ff48 h U+0068 0x69 iU+ff49 i U+0069 0x6a jU+ff4a j U+006a 0x6b kU+ff4b k U+006b 0x6c lU+ff4c l U+006c 0x6d mU+ff4d m U+006d 0x6e nU+ff4e n U+006e 0x6f oU+ff4f o U+006f 0x70 pU+ff50 p U+0070 0x71 qU+ff51 q U+0071 0x72 rU+ff52 r U+0072 0x73 sU+ff53 s U+0073 0x74 tU+ff54 t U+0074 0x75 uU+ff55 u U+0075 0x76 vU+ff56 v U+0076 0x77 wU+ff57 w U+0077

0x78 xU+ff58 x U+0078 0x79 yU+ff59 y U+0079 0x7a zU+ff5a z U+007a 0x7b {U+ff5b { U+007b 0x7c |U+ff5c | U+007c 0x7d }U+ff5d } U+007d 0x7e ~U+ff5e ~ U+007e */

⑥ mssql查詢怎樣去區分[大小寫]及[全形半形]

在sql2000和7.0的查詢語句中--區分大小寫、全半形字元的方法--查詢--1.查大寫字母.區分全形半形select * from 表where fd collate Chinese_PRC_CS_AS_WS like '%A%' --就是在欄位名後加 collate Chinese_PRC_CS_AS_WS --1.查大寫字母.不區分全形半形select * from 表where fd collate Chinese_PRC_CS_AS like '%A%' --就是在欄位名後加 collate Chinese_PRC_CS_AS --2.查全形.區分大小寫select * from 表where fd collate Chinese_PRC_CS_AS_WS like '%A%' --3.查全形.不區分大小寫select * from 表where fd collate Chinese_PRC_CI_AS_WS like '%A%' 排序規則的後半部份即後綴 含義: _BIN 二進制排序 _CI(CS) 是否區分大小寫,CI不區分,CS區分 _AI(AS) 是否區分重音,AI不區分,AS區分 _KI(KS) 是否區分假名類型,KI不區分,KS區分 _WI(WS) 是否區分寬度 WI不區分,WS區分

熱點內容
隨機訪問方式 發布:2024-05-20 12:42:52 瀏覽:257
php判斷登陸 發布:2024-05-20 12:14:24 瀏覽:628
腳本精靈並且 發布:2024-05-20 11:39:40 瀏覽:266
綠盟登陸器單機怎麼配置列表 發布:2024-05-20 11:34:34 瀏覽:971
Android省電軟體 發布:2024-05-20 11:25:00 瀏覽:341
android鍵盤隱藏 發布:2024-05-20 11:23:40 瀏覽:523
瘋狂點擊的點擊腳本 發布:2024-05-20 11:09:06 瀏覽:686
飯團文件夾 發布:2024-05-20 10:56:18 瀏覽:575
win10系統重置密碼是多少 發布:2024-05-20 10:47:51 瀏覽:992
java加包 發布:2024-05-20 10:39:12 瀏覽:713