国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Sql Server中Cross Apply關鍵字的使用

這篇具有很好參考價值的文章主要介紹了Sql Server中Cross Apply關鍵字的使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Sql Server中Cross Apply關鍵字的使用

前言

在寫一個業(yè)務的時候,有1列數(shù)據(jù)如下:

車牌號
湘A00001/湘G00001
湘A00002/湘G00002
湘A00003/湘G00003/湘A8888888
湘A00004/湘G00004/湘A00001

我的查詢條件也是車牌號,我會傳入如下參數(shù):

@PLATE_NO '湘A00003/湘G00003/湘A8888888'

我需要判斷我傳入的車牌號是否包含上面的列數(shù)據(jù),舉例上面的表為B表,那么B表列中的車牌號,我的PLATE_NO參數(shù)需要包含里面所有的車牌號。

一個簡單的包含關系,我會用拆分函數(shù)去拆分我傳入的參數(shù),然后去比對參數(shù)是否包含B表的車牌號。對于參數(shù)處理很簡單,但是B表的多行,那么該如何去處理B表的列呢?

Cross Apply介紹

在 SQL Server 中,Cross Apply 關鍵字主要用于從一個表中獲取數(shù)據(jù),并對每一行數(shù)據(jù)應用一個表值函數(shù),然后返回函數(shù)的結果。這個關鍵字允許你在右側的表達式中引用左側表的列。

Cross Apply 和 Inner Join 類似,只返回匹配的記錄。如果沒有匹配的記錄,那么就不會返回任何結果。

思路

首先肯定需要通過‘/’拆分獲得車牌號數(shù)據(jù),將湘A00003/湘G00003/湘A8888888變成如下格式

col
湘A00003
湘G00003
湘A8888888

那么B表該如何去實現(xiàn),它有多行數(shù)據(jù),多行數(shù)據(jù)如何拆分成一列。

代碼實現(xiàn)

首先我們需要有一個表值函數(shù)來拆分字符串:

CREATE FUNCTION dbo.SplitString
(
    @List NVARCHAR(MAX),
    @Delim NVARCHAR(255)
)
RETURNS TABLE
AS
RETURN 
(
    SELECT Item = y.i.value('(./text())[1]', 'nvarchar(4000)')
    FROM 
    ( 
        SELECT x = CONVERT(XML, '<i>' 
        + REPLACE(@List, @Delim, '</i><i>') 
        + '</i>').query('.')
    ) AS a CROSS APPLY x.nodes('i') AS y(i)
);

實現(xiàn)方式很多,我這里直接讓GPT生成了一個,執(zhí)行上述代碼即可完成拆分函數(shù)創(chuàng)建,調(diào)用如下:

SELECT Item FROM dbo.SplitString('湘A00003/湘G00003/湘A8888888', '/');

對于B表的操作,就需要使用到Cross Apply關鍵字了,我對每一行數(shù)據(jù)車票號進行拆分操作,然后將數(shù)據(jù)存于臨時表,并去重處理。

SELECT DISTINCT
split.col
INTO #TEMP
FROM B
CROSS APPLY dbo.SplitString(車牌號, '/') AS split;

拆分結果如下

col
湘A00001
湘G00001
湘A00002
...

然后在進行比對查詢

將參數(shù)存放在TEMP01臨時表,將B表拆分的數(shù)據(jù)存于TEMP02臨時表,然后使用CASE WHENTEMP02為主表判斷TEMP01列是否存在與02中,不能存在則新建一列賦值為0

SELECT 
P.Item,
CASE
WHEN EXISTS
(
SELECT 1 FROM TEMP01 WHERE Item = P.Item
)          THEN
    1
ELSE
    0 
END AS ISBOOL
FROM TEMP02 P

結果如下,這里只是舉例子,主要是體現(xiàn)Cross Apply的作用。

Sql Server中Cross Apply關鍵字的使用

Sql Server中Cross Apply關鍵字的使用

總結

簡單來說 Cross Apply 看作是 SQL Server 中的一個"循環(huán)"操作。對于你在左邊的表中的每一行數(shù)據(jù),Cross Apply 都會執(zhí)行一次右邊的查詢。我上述的操作就是多列數(shù)據(jù)使用實現(xiàn)Cross Apply循環(huán)拆分每行數(shù)據(jù)的車牌號列。文章來源地址http://www.zghlxwxcb.cn/news/detail-749812.html

到了這里,關于Sql Server中Cross Apply關鍵字的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • SQL ORDER BY 關鍵字

    SQL ORDER BY 關鍵字

    ORDER BY 用于對結果集進行排序。 ORDER BY 用于對結果集按照一個列或者多個列進行排序。 ORDER BY 默認按照升序對記錄進行排序。如果需要按照降序對記錄進行排序,您可以使用 DESC 。 ORDER BY 子句后面的列名指示按哪些列進行排序。如果您指定多個列

    2024年02月16日
    瀏覽(21)
  • sql中的explain關鍵字用法

    sql中的explain關鍵字用法

    在SQL中,使用 EXPLAIN 可以獲取查詢的執(zhí)行計劃,以便進行性能優(yōu)化和查詢調(diào)優(yōu)。執(zhí)行計劃提供了關于查詢操作的詳細信息,涵蓋了多個表頭字段,每個字段都提供了特定的信息。以下是explain表頭字段解釋: id :每個操作的唯一標識符。這個字段通常是一個遞增的整數(shù)

    2024年01月18日
    瀏覽(31)
  • 【SQL】SQL的基礎知識-語法、關鍵字、函數(shù)

    SQL(Structured Query Language)是一種用于管理關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)的語言。在本文中,我們將討論SQL的基礎知識,包括語法、和函數(shù)。 SQL語法由多個和操作符組成,用于完成對數(shù)據(jù)的操作。以下是SQL的基礎語法: 其中, SELECT 用于選擇要查詢的列,

    2024年02月06日
    瀏覽(19)
  • 數(shù)據(jù)庫--SQL關鍵字的執(zhí)行順序

    數(shù)據(jù)庫--SQL關鍵字的執(zhí)行順序

    數(shù)據(jù)庫-- 數(shù)據(jù)類型 : http://t.csdn.cn/RtqMD 數(shù)據(jù)庫-- 三大范式、多表查詢、函數(shù)sql: http://t.csdn.cn/udJSG 數(shù)據(jù)庫-- MySQL增刪改查: http://t.csdn.cn/xkiti select? ?from? ?join? ?where? ?group by? ?having? ?order by? ?聚合函數(shù)? ?limit? ?top? 以及邏輯運算符not? and? ? or? ? 一: 語法順序 ? ?

    2024年02月12日
    瀏覽(22)
  • SQL語句——DESC關鍵字,降序練習

    SQL語句——DESC關鍵字,降序練習

    學習 1、DESC是descend下降的縮寫,降序,只要放在需要降序的字段前面就可以了, 2、對多個字段執(zhí)行降序排列的話就是字段名+DESC以逗號隔開再字段名+DESC.....最后以分號結尾 3、select xxx(字段) from xxx(表) where (條件xxxx) ,排序、分組操作都是在where條件之后的,查詢xxxx字段從

    2024年02月16日
    瀏覽(17)
  • SQL FULL OUTER JOIN 關鍵字:左右表中所有記錄的全連接解析

    SQL FULL OUTER JOIN 關鍵字:左右表中所有記錄的全連接解析

    SQL RIGHT JOIN返回右表(table2)中的所有記錄以及左表(table1)中的匹配記錄。如果沒有匹配,則左側的結果為0條記錄。 注意:在某些數(shù)據(jù)庫中,RIGHT JOIN被稱為RIGHT OUTER JOIN。 在本教程中,我們將使用著名的Northwind示例數(shù)據(jù)庫。 以下是“Orders”表的部分選擇: OrderID C

    2024年02月05日
    瀏覽(18)
  • Caused by: java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FROM 關鍵字

    報錯提示: Caused by: java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FROM 本人分析:未找到from,說明from前的sql語句格式有問題(并不一定是缺少from這個或者from拼寫錯誤)。 舉個代碼報錯的例子: 正確的sql語句: select \\\'123‘ XX ’123\\\' from dual; 錯誤

    2024年02月11日
    瀏覽(22)
  • MySQL java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax 關鍵字異常處理

    MySQL java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax 關鍵字異常處理

    使用mybatis插入數(shù)據(jù)時出現(xiàn)java.sql.SQLSyntaxErrorException異常 收到錯誤“由:java.sql.SQLSyntaxErrorException:您的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,了解在第14行的“”附近使用的正確語法。 liquibase回答: You have an error in your SQL syntax; check the manual that corresponds to

    2024年02月15日
    瀏覽(22)
  • 【C++100個關鍵字使用介紹】

    C++ 中的是用于表示語言中預先定義好的、具有特殊意義的單詞。這些不能用作變量名、函數(shù)名或任何其他標識符名稱。盡管目前 C++ 沒有一百個,但是 C++11、C++14、C++17 和 C++20 的標準中持續(xù)增加了一些。 以下是 C++ 中一些的列表和簡短說明,

    2024年01月21日
    瀏覽(22)
  • 使用VSCode在文件中查找關鍵字

    在使用VSCode編輯器時,經(jīng)常需要在文件中查找特定的或文本。VSCode提供了強大的搜索功能,可以幫助我們快速定位并找到所需的內(nèi)容。本文將介紹如何在VSCode中進行搜索。 在VSCode中查找的方法如下: 打開目標文件:首先,打開你想要在其中進行搜

    2024年02月04日
    瀏覽(116)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包