SQL學習筆記——關於參數類型的問題

来源:http://www.cnblogs.com/uu2013/archive/2017/08/13/7354188.html
-Advertisement-
Play Games

在使用存儲過程的時候碰到一個問題: 存儲過程有一個int類型的參數,可傳0,1,2在存儲過程中篩選數據,如果傳空值則不做篩選。 然而存儲過程處理該參數時會把0當作空值來處理,達不到預期效果。 解決方法 :將int型參數換為varchar型參數則不會有此問題 問題示例: 上面的存儲過程是根據參數@se ...


在使用存儲過程的時候碰到一個問題:

存儲過程有一個int類型的參數,可傳0,1,2在存儲過程中篩選數據,如果傳空值則不做篩選。

然而存儲過程處理該參數時會把0當作空值來處理,達不到預期效果。

解決方法 :將int型參數換為varchar型參數則不會有此問題

問題示例:

 1 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetUsers]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
 2 drop procedure [dbo].[GetUsers]
 3 GO
 4 
 5 create procedure GetUsers    
 6     @sex int
 7 as
 8 begin    
 9     declare @sqlStr varchar(1000)
10     set @sqlStr = 'select name, sex from users'
11     if (@sex <> '')
12         set @sqlStr = @sqlStr + ' where sex =' + CONVERT(varchar(10),@sex)
13     exec(@sqlStr)
14 end 

上面的存儲過程是根據參數@sex查找不同性別的用戶,sex=0為男性,sex = 1為女性,

但實際上並不符合預期效果,如下圖:

將參數@sex改為varchar類型即可。

 

 

 

 

convert

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一致性非鎖定讀(consistent nonlocking read) 一致性非鎖定讀是值InnoDB存儲引擎通過多版本控制(multi versioning)的方式來讀取當前執行時間資料庫中的數據。如果被讀的數據行被加了排他鎖,在讀取這行數據的時候並不會等待鎖釋放,而是讀取該行的一個快照數據。 之 ...
  • 在SSIS工程的開發過程中,OLEDB 數據源和目標組件是最常用的數據流組件。從功能上講,OLEDB 數據源組件用於從OLEDB 提供者(Provider)中獲取數據,傳遞給下游組件,OLEDB提供者是外部數據源,SQL Server是其中一種OLEDB提供者;OLEDB目標組件用於把數據流插入到關 ...
  • 如果轉載,請註明博文來源: www.cnblogs.com/xinysu/ ,版權歸 博客園 蘇家小蘿蔔 所有。望各位支持! 如果轉載,請註明博文來源: www.cnblogs.com/xinysu/ ,版權歸 博客園 蘇家小蘿蔔 所有。望各位支持! 如果轉載,請註明博文來源: www.cnblog ...
  • 1.使用maven或者其他打包工具將storm-starter打成jar包 2.請將jar包用解壓工具打開在根目錄下找到defaults.yaml文件並將其刪除不然到時會報有multiply defaults.yaml的錯哦 3.用ftp工具將jar包上傳到linux系統主節點上 4.在各個節點上啟 ...
  • 1.註釋語法:--,#2.尾碼是.sql的文件是資料庫查詢文件3.保存查詢4.在資料庫裡面 列有個名字叫欄位 行有個名字叫記錄CRUD操作:create 創建(添加)read 讀取update 修改delete 刪除1、添加數據insert into Info values('p009','張三', ...
  • SQL即結構化查詢語言(Structured Query Language),是一種特殊目的的編程語言,是一種資料庫查詢和程式設計語言,用於存取數據以及查詢、更新和管理關係資料庫系統;同時也是資料庫腳本文件的擴展名。SQL語句無論是種類還是數量都是繁多的,很多語句也是經常要用到的,SQL查詢語句就是 ...
  • mysql批量數據腳本 1 建表 2 設置參數 3 創建函數 a.隨機產生字元串 delimiter $$ create function rand_string(n int) returns varchar(255) begin declare chars_str varchar(100) def ...
  • 存儲過程(Stored Procedure)是一組為了完成特定功能的SQL語句集。經編譯後存儲在資料庫 中的存儲過程概念定義及存儲過程優點和缺點。 procedure通過完整的存儲過程實例來掌握存儲過程的創建、修改、刪除、顯示語法使用操作。掌握變數在實例中的應用,完整實例下載在以後工作中的應用... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...