1樓:匿名使用者
不可以省略,@銀行帳號名稱是一個變數,也是一個字串。
set @sql='alter table dbo.臨時表1 add ['+@銀行帳號名稱+'] int default 0'其實就是執行了三個字串的相加操作,把結果賦值給@sql變數。
括號是為了相容sql server裡的關鍵字,如果欄位名是關鍵字的話,某些版本的sql server會報錯,所以要用括起來。
2樓:匿名使用者
sql 中的 + 號可以做運算子 +,也可以做為連線符。
一、兩端都為數值 ,如 select 1+2 ,即返回3
二、兩端引用欄位,如 select a + b
1、a、b均為字元型別 ,做為連線符,即 a=1,b=1 select a+b 返回 11
2、a、b均為數值型別,做為運算子 ,即 a=1,b=1 select a+b 返回 2
3、a、b其中一列為數值型,那麼系統會先嚐試將字元列轉數值,轉換成功,以運算子運算,轉換失敗則報錯。
如 a = '1' ,b=1, select a+b 返回 2 ,
而 a='a',b=1 ,select a+b 則系統報錯。
該情況,不同的資料庫管理系統,處理略有不同,比如部分資料庫不會嘗試轉換,而是直接報錯。
3樓:傳說中的鷹王
如果@銀行帳號名稱 = pufa
相當於執行語句
alter table dbo.臨時表1 add [pufa] int default 0
@sql 是在拼執行語句。
因為語句中需要呼叫變數,所以要先拼出sql串,再執行+號的作用是把兩個字串連在一起,
2個+號就把3個字串連到了一起
是把欄位名括起來 ,用來定界,防止有空格等字元出現在欄位裡
4樓:劉偉偉實名
首先解決""的問題是:t_sql語法已經規定凡是對物件命名不符合標準命名的,如你給物件命名時出現了特殊字元如空格,加號,等特殊字元需在物件名前加上或"",這樣不會出錯否則就出錯。然後說加號問題,它的作用是連線字串只要你要連線字串必須用它
sql中取序號的問題
5樓:匿名使用者
這樣不就行嗎
建立測試表及插入資料
create table a
(顧客id int,
消費id int,
消費金額 int);
insert into a values (1,1,100);
insert into a values (1,2,20);
insert into a values (1,3,300);
insert into a values (1,4,40);
執行set @r=0;
select @r:=@r+1, a.*
from a
where 顧客id=1;
結果其中第一列就是消費次數
6樓:axure夜話
這個問題的關鍵時候查詢的時候使用的排序方式。有了排序方式你就可以在獲取資料的時候構造虛擬的序號,有了序號序號就代表客戶的第幾次消費。比如使用排名函式生成等等。
7樓:葡萄冰茶
是oracle嗎 oracle 可以查出序號
SQL語句的問題,SQL語句的問題
用聯接。假設資料庫名為test,列1為a,列2為b,排序欄位為id。下列語句可查出所有b列與其他行的a列相同的記錄 select t1.a,t1.b from test t1 join test t2 on t1.b t2.a where t1.a t2.a 下列語句可查出第5行是否存在b列與其他行...
SQL語句問題,SQL語句問題
兩種寫法 select b.b id a.id as a id a.o money a.n money as abc from a,b where b.a id a.id select b.b id a.id as a id a.o money a.n money as abc from b lef...
SQL語句問題
雖然你的這個語句最終是select dateadd d,1,2008 12 10 dateadd函式裡面的第一個引數是一個標誌,它不是字元型別,應該是一個 列舉型別 你那條語句實際上是在執行 select dateadd d 1,2008 12 10 這和上面的那個是完全不同的,都是d,但是這個d表...