當前位置:首頁 » 編程語言 » sql欄位名與函數重名
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql欄位名與函數重名

發布時間: 2022-05-11 19:11:49

A. 如何讓欄位名命名為系統函數同名的名稱。比如說設置某欄位名為Type或者Count。拜託各位了 3Q

MS sql資料庫中,可以使用 [] 括起和關鍵字同名的欄位名;MYSQL中則使用 `` 括起和關鍵字同名的欄位名稱。 如: MS SQL ==> [type] [user] MYSQL ==> `time`

B. SQL查詢時欄位名稱和函數名稱相同,怎麼查欄位

SQL存儲過程 參數為欄位名和值的函數怎麼寫 if (@BasicUnit_1 != 0) and (@BasicUnit_1 != null) begin update ProctPrice set BasicUnit_1 = cast(FactoryPrice * @BasicUnit_1 as decimal(18,2)) where ProctID in (select ProctID from V_Procts where @strWhere) end if (@BasicUnit_2 != 0) and (@BasicUnit_2 != null) begin update ProctPrice set BasicUnit_2 = cast(FactoryPrice * @BasicUnit_2 as decimal(18,2)) where ProctID in (select ProctID from V_Procts where @strWhere) end

C. 如何避免SQL查詢出的重名欄位被覆蓋

使用表別名進行表的區分,在select要的結果後面加 as XXX 進行重命名。

D. SQL Server的欄位名與關鍵字同名如何解決

在使用的時候,使用中括弧擴起來,試一試

select*from[from]---使用from作為表名

E. sql語句中怎樣查詢學生表中所有有著相同的名字的人的信息

方法一:select *from 學生表

where name in 姓名

方法二:

selecct 姓名

from 學生表

group by 姓名

having count(*)>1

如果 having 子句不加,則是統計各名字的數量,加上則只顯示 數量大於 1 的人名。

(5)sql欄位名與函數重名擴展閱讀:

sql 學生表中如何查詢與某同學同年的人

SELECT*FROM學生表T1

WHERE EXISTS(SELECT1

FROM學生表T2

WHEREYEAR(T1.生日) = YEAR(T2.生日)

AND 學生編號 = '某同學學生編號')

YEAR是取datetime類型數據的年部分的函數,只要表中的數據存在年份和某學生生日的年份相同就可以。

F. 兩個sql數據表,欄位名不一樣,但欄位個數一樣,數據也一樣

用charindex函數:
a1="1"
sql="select
*
from
數據表
where
'"&a1&"'
in(欄位名)"

a1="1"
select
*
from
數據表
where
欄位名
in
(
select
欄位名
from
數據表
where
charindex(a1,欄位名)>0
)
in語句的用法樓主需要熟悉一下,否則你不能熟練正確地運用in語句

G. sql查詢兩個欄位相同的記錄

EXCEL中用VBA連接ACCESS資料庫
有如下一張表,要分別查找出所有同名的人、所有同名並且學號也一樣的人以及所有同名但不同學號的人。

查詢所有同名人員
select * from [18年考試成績] where [姓名] in (SELECT [姓名] FROM [18年考試成績] group by [姓名] having count(姓名)>1)
查詢結果:

查找所有姓名和學號兩個欄位都重復的人
select * from [18年考試成績] where [姓名] in (SELECT [姓名] FROM [18年考試成績] group by [姓名] having count(姓名)>1) and [學號] in (SELECT [學號] FROM [18年考試成績] group by [學號] having count(學號)>1)
查詢結果:

查找所有姓名重復但學號不重復的人
select * from [18年考試成績] where [姓名] in (SELECT [姓名] FROM [18年考試成績] group by [姓名] having count(姓名)>1) and [學號] not in (SELECT [學號] FROM [18年考試成績] group by [學號] having count(學號)>1)
注意:要把SELECT查詢子句配合in或not in 操作符使用,SELECT查詢子句只能有一列內容。
查詢結果:

其中子句 「SELECT [姓名] FROM [18年考試成績] group by [姓名] having count(姓名)>1」是顯示所有重復的姓名,如果如下:

如果要知道重復出現次數,則可以這樣寫:
SELECT [姓名],count(姓名) as 出現次數 FROM [18年考試成績] group by [姓名] having count(姓名)>1
結果如下:

查找唯一記錄
group by [姓名],意思是按姓名分組,having count(姓名)>1 是分組條件,意思是姓名次數出現2次以上的重復內容以姓名進行分組,前面的count(姓名)是對分組以後的姓名統計出現次數。在後面要使用函數條件時應該使用having,而不是使用where
查找唯一值,比如本例的班級中,只有一個「四班」,要把這個四班的所有欄位顯示出來可以這樣:
select * from [18年考試成績] where 班級 not in (SELECT 班級 FROM [18年考試成績] group by 班級 having count(班級)>1)
結果:

如果使用「SELECT DISTINCT 班級 FROM [18年考試成績]」語句查詢唯一值,結果將會如下:

DISTINCT 會顯示不重復的值,如果有重復的,只顯示第一個,所以如果需要顯示僅出現一次的值並不適合使用SELECT DISTINCT語句
分組查詢語句:
比如要班級為單位,查詢每個班的總人數,科目總分,科目平均分等
SELECT [班級],count(姓名) as 班級人數,sum(語文) as 語文總成績,sum(數學) as 數學總成績,ROUND(avg(語文),1) as 語文平均分,ROUND(avg(數學),1) as 數學平均分 FROM [18年考試成績] group by [班級]
查詢結果如下:

注意:如果使用函數的欄位,不使用AS指定別名,將會自動生成一個欄位名,第一列名字Expr1000,第二列名為Expr1001,第三列名為Expr1002,以此類推
如:
SELECT [班級],count(姓名),sum(語文),sum(數學),ROUND(avg(語文),1) ,ROUND(avg(數學),1) FROM [18年考試成績] group by [班級]
查詢結果如下:

如果不指定別名,你將無法清楚在查詢結果中知道每一列是干什麼的。
如果需要再細分,查詢每個班女生總人數和科目平均分,只需要再加一個where條件就可以了
SELECT [班級],count(姓名) as 班級女性人數,ROUND(avg(語文),1) as 語文平均分,ROUND(avg(數學),1) as 數學平均分 FROM [18年考試成績] where 性別='女' group by [班級]

H. sql server2008中屬性名與內置函數名能一樣嗎

可以,但需要用中括弧[colname]

I. SQL SERVER修改函數名容易引發的問題有哪些

通過SSMS改了原函數名,而SQL SERVER不會因為改名去更新sys.all_sql_moles視圖的definition欄位的!於是就造成了已經編譯好的函數與sys.all_sql_moles系統視圖的函數定義出現了不一致的情況。
結論:

(1)盡量不要修改對象名,確實要修改的話,就重建吧。如果是表並且包含的大量數據要重建的話,就比較麻煩了,即使是修改表名不會出現像函數、存儲過程的問題,但修改表名涉及應用程序等問題。

(2)盡量使用SSMS的右鍵菜單修改或生成對象的定義。但如果函數或存儲過程太多,會覺得sp_helptext和sys.all_sql_moles會更方便些,查詢出來的結果要認真核對下對象名是否一致即可。這里提一下,sp_helptext有些限制,可以參考SQL中print、sp_helptext的限制與擴展。

J. sql語句有兩個欄位id,name(name重復欄位),kd金額,計算名字相同的,金額相加

select name,sum(kd金額) from TABLENAME group by name;