SQL Server去重和判斷是否為數字

來源:互聯網
上載者:User

標籤:轉換   技術分享   架構   指定   返回   schema   auto   標識   自訂   

sql 語句查詢時去掉重複項:

使用 distinct 去掉重複項:

首先可以明確的看到存在重複的名字,那麼接下來就讓我們試試使用 distinct 去重吧。

1   select distinct * from Student

咦,怎麼沒效果呢?原來,distinct 是根據所查詢的欄位去重的。* 表示所有的欄位,可以明確的看到欄位 S_Id 和 S_StuNo 是不可能有重複的,因為一個為主鍵和自增長的識別欄位,一個有 unique (唯一)的約束。

既然明白了這一點,那下面就根據 S_Name,S_Sex,S_Height 這三個欄位去重吧:

1   select distinct S_Name,S_Sex,S_Height from Student

sql判斷字串是否為數字:

方法一: 使用sql server的內建函數 ISNUMERIC():

1   select ISNUMERIC(‘123‘)        -- 返回 1 2   select ISNUMERIC(‘123.12‘)    -- 返回 1 3   select ISNUMERIC(‘a123.12‘)    -- 返回 0 4   select ISNUMERIC(‘abc‘)        -- 返回 0 

函數 ISNUMERIC() 返回結果為 1 表示全是數字,結果為 0 表示有除了數位其他字元,但是“.”(小數點也會被當做其中一部分)。

方法二: 匹配字串中是否存在除了數字之外的其他字元(小數點也算作其他字元)

 1 if((‘123‘ not like ‘%[^0-9]%‘))    -- 數字 2 begin 3     select ‘數字‘ 4 end 5 else 6 begin 7     select ‘非數字‘ 8 end 9 10 if((‘a123‘ not like ‘%[^0-9]%‘))    -- 非數字11 begin12     select ‘數字‘13 end14 else15 begin16     select ‘非數字‘17 end18 19 if((‘123.1‘ not like ‘%[^0-9]%‘))    -- 非數字20 begin21     select ‘數字‘22 end23 else24 begin25     select ‘非數字‘26 end

當然,我們也可以根據這種方式,定義一個自訂函數,這個後面再說。

SQL 查詢出某欄位出現最多次數的值:

1 -- 查詢出表 Student 中名字(S_Name)出現次數最多的名字2   select top 1 S_Name,COUNT(1) from Student group by S_Name order by COUNT(1) desc

sql server [case  when  then  else  end]:

1 select S_StuNo 學號,S_Name 姓名,2 case S_Sex when ‘男‘ then ‘男生‘ when ‘女‘ then ‘女生‘ else ‘保密‘ end 性別,        -- 方式一3 case when S_Sex=‘男‘ then ‘男生‘ when S_Sex=‘女‘ then ‘女生‘ else ‘保密‘ end 性別,    -- 方式二4 S_Height 身高5 from Student

sql OBJECT_ID、OBJECT_NAME、OBJECT_DEFINITION:

 1 if (OBJECT_ID(‘Student‘) is not null)    --判斷是否存在 Student 這個表 2 begin 3     select ‘表已存在‘ 4 end 5 else 6 begin 7     select ‘表不存在,請建立‘ 8 end 9 10 --指定一個暫存資料表名,則必須在暫存資料表名前面加上資料庫名,例如:11 IF OBJECT_ID(‘tempdb..#table1‘) is not null        --判斷暫存資料表 table1 是否存在,12 select ‘表已存在‘13 else14 select ‘表不存在,請建立‘15 16 select OBJECT_ID(‘Student‘)        -- 返回 245575913  根據對象名稱返回對象ID 17 18 select OBJECT_NAME(‘245575913‘)        -- 返回 Student  根據對象ID返回對象名稱19 20 select OBJECT_DEFINITION(‘245575913‘)    --返回對象的源檔案21 22 select OBJECT_DEFINITION(OBJECT_ID(‘Student‘)) 
OBJECT_ID文法: OBJECT_ID ( ‘[ database_name . [ schema_name ] . | schema_name . ] object_name‘ [ ,‘object_type‘ ] )
參數:
‘ object_name ‘ (必填)
是要使用的對象。 object_name是varchar或nvarchar。 如果object_name是varchar,它將隱式轉換為nvarchar。 可以選擇是否指定資料庫和架構名稱。
‘ object_type ‘ (可選)
架構範圍的物件類型。 object_type是varchar或nvarchar。 如果object_type是varchar,它將隱式轉換為nvarchar。
傳回型別:
return int
PS:對於空間索引,OBJECT_ID 返回 NULL。出現錯誤時,返回 NULL。
OBJECT_NAME文法: OBJECT_NAME ( object_id [, database_id ] ) 
參數:
‘ object_id ‘ (必填)
要使用的對象的 ID。 object_id是int ,假定在指定的資料庫中,或在當前資料庫上下文中為架構範圍的對象。
‘ database_id ‘(可選)
要在其中尋找對象的資料庫的 ID。 database_id是int。
傳回型別:
return nvarchar(max)
PS:出現錯誤時或調用方沒有查看對象的許可權時,將返回 NULL。 如果目標資料庫的 AUTO_CLOSE 選項設定為 ON,則此函數將開啟此資料庫。
使用者只能查看符合如下條件的安全性實體的中繼資料:該安全性實體為該使用者所有,或已授予該使用者對該安全性實體的許可權。
也就是說,如果使用者對該對象沒有任何許可權,則那些會產生中繼資料的內建函數(如 OBJECT_NAME)可能返回 NULL。
OBJECT_DEFINITION文法:OBJECT_DEFINITION ( object_id )
參數:
‘ object_id ‘ (必填)
要使用的對象的 ID。 object_id是int,和假定以表示當前的資料庫上下文中的對象。
傳回型別:
return nvarchar(max)
PS:出現錯誤時或調用方沒有查看對象的許可權時,將返回 NULL。參見MSDN:https://msdn.microsoft.com/zh-cn/library/ms176090.aspx

SQL Server去重和判斷是否為數字

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.