簡體   English   中英

如何在我的過程中使用 where 語句並在 select 語句中使用開引號?

[英]How can I use a where statement in my procedure with open quotes inside the select statement already?

在我的程序中,我需要有表格的輸入參數,並且我需要能夠在我的程序中創建多個 select 語句。 但是,當我開始添加 WHERE 條件時,它們僅適用於數字條件,即其中 number = 1,但它不適用於 text = 'a',因為該語句已經以 ' ' ie 'select...' 打開(請參閱編碼)

因此文本條件與左引號沖突。

那么如何添加關於文本的 where 語句呢?

(問題是日期在哪里)

output如下:

消息 102,第 15 級,State 1,第 23 行
'00' 附近的語法不正確。

(受影響的 53 行)

我嘗試將 where 子句與單獨的 ' ' 分開,但沒有用。

我嘗試在 ' ' 內使用 " 但沒有用,並說 '無法識別列名'

我試圖將文本視為沒有''但沒有用的數字。

CREATE PROCEDURE AllRowsAndCount35
    @table1 NVARCHAR(128)
AS
BEGIN
    DECLARE @SafeTableName AS NVARCHAR(128)

    SELECT @SafeTableName = QUOTENAME(TABLE_NAME)
    FROM INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_NAME = @table1

    DECLARE @sql AS NVARCHAR(MAX) = 'select  count(*) as countrows from ' + @SafeTableName + 'where valid_from_etl = 2019-06-24 00:00:00.000'

    EXEC(@SQL)

    DECLARE @sql2 AS NVARCHAR(MAX) = 'select  * from ' + @SafeTableName 

    EXEC(@SQL2)
END 

EXEC AllRowsAndCount35 'Dim_Cluster'

我想要一個顯示行數的結果,另一個顯示整個表格的單獨結果

基本上兩個單獨的查詢基於我輸入表名作為輸入參數的過程

相反,錯誤消息是:

消息 102,第 15 級,State 1,第 23 行
'00' 附近的語法不正確。

使用兩個單引號(不是雙引號)來表示帶引號的字符串中的單引號。

例如: 'SELECT... WHERE date = ''date'''

或者更好的是,使用像@safetablename一樣的變量。

話雖如此,您的 proc 不會返回兩個數據集。 您必須使用UNION來制作 1 個最終 select 以及您想要返回的所有數據,或者使用參數來定義在調用 proc 並調用 proc 兩次時執行哪個查詢,或者制作兩個單獨的 procs。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM