Alias (as)
通過使用 SQL,可以為列名稱和表名稱指定別名(Alias)。
語法:(列的 SQL Alias 語法)
SELECT column_name AS 中文名稱
FROM table_name擴展(表的sql alias 語法)
SELECT column_name(s)FROM table_name
AS alias_name創建測試表並且生成數據
create table tb
( spid varchar(11),
spmch varchar(20),
shl numeric(10,2) )
insert into tb
values ('01','蘋果',10),
('02','梨子',20)
測試結果:
select spid as 商品id,spmch as 商品名稱,shl as 商品數量 from tb
結果:
B. 查找欄位值有中文的sql語句
select * from table1 where PATINDEX(N'%[吖-咗]%',欄位) >0
或者
select * from table1 where 欄位 like '%吖-咗%'
原理是使用通配符的 - 符號 使字元匹配漢字字元范圍
同理 可以反其道而行 讓其取非英文、標點符號的字元串,但這樣通配符不好寫
如果是mysql 或者其他可以使用正則表達式匹配的就很簡單了
C. oracle sql 判斷 欄位是否是漢字
1、使用ASCIISTR函數判別
ASCIISTR函數說明:ASCIISTR返回字元的ASCII形式的字元串。非ASCII的字元被轉化為xxxx的形式。使用ASCIISTR函數也是根據非ASCII字元會被轉化這個特性來判別中文字元,只要裡麵包含中文字元,則必定會有xxx這樣的字元。
使用 ASCIISTR(NAME_ONE) LIKE '%\%' 就能判別那些有中文的記錄。如下所示:
SELECT NAME_ONE FROM TEST WHERE ASCIISTR(NAME_ONE) LIKE'%\%'
2、使用CONVERT函數判別
CONVERT函數說明:
CONVERT(inputstring,dest_charset,source_charset)
inputstring:要轉換的字元串
dest_charset:目標字元集
source_charset:原字元集
3、使用函數length和lengthb來判別
使用函數length與lengthb來判別,是基於中文字元佔用2~4個位元組,而ASCII字元佔用一個位元組,那麼對比LENGTH與LENGTHB就會不一樣。這樣就能判別欄位中是否包含中文字元,但是跟ASCIISTR一樣,如果裡面的非ASCI字元包含非中文,它一樣不能判別。依然有取巧嫌疑。
SELECT NAME_ONE FROM TEST WHERE LENGTH(NAME_ONE) != LENGTHB(NAME_ONE);
(3)sql查詢欄位念中文擴展閱讀
Oracle SQL編寫注意事項:
1、SQL語句用大寫的;因為Oracle總是先解析SQL語句,把小寫的字母轉換成大寫的再執行。
2、數據表最好起別名;因為便於sql優化器快速分析。
3、盡量不要使用 insert into table value(?,?,?,?,?)格式,要指出具體要賦值的欄位。INSERT.....SELECT的效率會有提高。
4、select與from語句之間只定義返回的欄位名,除非返回所有的欄位,盡量不要使用 * 。
5、select欄位名應按照表的欄位物理順序編寫,欄位提取要按照「需多少、提多少」的原則,原因是大批量數據的抽取會影響sql緩存的效率。
6、COUNT(*)也是要避免的,因為Count(*)會對全欄位做聚集。但一般的觀點相反, count(*) 比count(1)稍快 , 當然如果可以通過索引檢索,對索引列的計數仍舊是最快的. 例如 COUNT(EMPNO)。
7、條件中使用or 會引起全表掃描,比較影響查詢效率,盡可能少用或不用,實在不行可以用UNION代替。
D. SQL問題,比如表中有個欄位 A,它的值一般都是 數字 跟 中文 兩種,如何查詢出值為 中文 的記錄
select*fromtablewhereISNUMERIC(column)=0--這個是查詢出非純數字的明細
如果需要找出純中文的,那麼需要用正則表達式
CREATEFunction[dbo].[RemoveNonNumericCharacters](@TempVarChar(1000))
ReturnsVarChar(1000)
AS
Begin
WhilePatIndex('%[^0-9]%',@Temp)>0
Set@Temp=Stuff(@Temp,PatIndex('%[^0-9]%',@Temp),1,'')
Return@TEmp
End
E. sql查詢所有包含中文的數據
判斷length(content)和lengthb(content)是否相等,如果不相等則包含中文,否則全英文。
length(content)計算content的字元個數,一個中文字元長度為1;
lengthb(content)計算content的位元組位數,一個位長度為1,一個中文字元長度為2。
1樓說的不對
F. sql表為中文的查詢語句
和英文的基本一樣.
除非你中文裡麵包含空格什麼的, 就要額外處理了.
比如 Oracle 用雙引號
SELECT * FROM "中文 表名"
SQL Server 用 []
SELECT * FROM [中文 表名]
MySQL用 ` ( 標准鍵盤 數字1 左邊的那個符號)
SELECT * FROM `中文 表名`
G. sql查詢出來的結果將某欄位值顯示中文
先看源數據是不是中文,一般sql不會改變欄位的值和類型
H. 為什麼SQL語句不可以查詢中文欄位
資料庫中的表欄位名不能為中文。比如你的「桌號」就是表「tableuse」的一個欄位,故不能為中文,你可以把表中的欄位名改為「tableno」,然後把SQL語句改為String execute="delete from tableuse where tableno=\""+tableNumber+"\";"; 就行了!
I. SQL 查詢語句有中文欄位,查不到結果,如何解決
從你的「語句:select
SubCategory
from
tblSubCategory
where
MainCategory
=
'固定資產'」中來看,欄位有「SubCategory
」和「MainCategory
」兩個,只有欄位「MainCategory
」的值是
'固定資產':是中文;
再者你所說「欄位用的是繁體中文」,理解有點暈,也許你說錯了吧,不如你把「固定資產"改成繁體中文「固定資產」
試試吧。。。。。快給分。。。。。。
J. sql語句有中文,亂碼怎麼解決
如果SQL Server 系統排序規則為"SQL_Latin1_General_CP1_CI_AS",那麼資料庫及資料庫欄位排序規則都默認為"SQL_Latin1_General_CP1_CI_AS",如果欄位為varchar,插入中文,資料庫顯示為"?",且數據無法修復。解決辦法如下:
1。 修改欄位排序規則為"Chinese_PRC_CI_AS",varchar改nvarchar,SQL插入語句中,中文字元前加"N",可以插入中文字元。
2。 修改資料庫排序規則為"Chinese_PRC_CI_AS",欄位保持varchar,SQL語句不變,插入中文失敗,查看欄位屬性後發現,欄位排序規則實際上沒有變化,還是默認為"SQL_Latin1_General_CP1_CI_AS",再修改欄位排序規則,varchar不變,SQL不變,可以插入中文字元。
總結:
1。 修改系統排序規則沒有試過。
2。 修改資料庫排序規則不會把資料庫中欄位的排序規則改掉,但是為了顯示中文,資料庫排序規則必須改。
3。 僅僅修改欄位排序規則,還不能完全解決問題。