国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SELECT 賦值與ORDER BY沖突的問題

2024-08-31 00:45:44
字體:
來源:轉載
供稿:網友

  問題描述:
  使用 SELECT 語句,輪詢表中的數據,并且處理變量數據時,如果有ORDER BY語句,則得不到想要的結果,但去掉ORDER BY,結果正常。
  具體的問題表現參考下面的問題重現代碼

  問題重現代碼
  -- 測試數據
DECLARE @T TABLE(id int,value nvarchar(16))
INSERT INTO @T SELECT
1, N'好人' UNION ALL SELECT
2, N'壞人' UNION ALL SELECT
3, N'吃飯' UNION ALL SELECT
4, N'垃圾'

  -- 賦值處理
DECLARE @str nvarchar(4000)
SET @str = N'我不是一個好人,也不是垃圾'
SELECT @str = REPLACE(@str, value, N'<u>' value N'</u>')
FROM @T
WHERE CHARINDEX(value, @str) > 0
--ORDER BY CHARINDEX(value, @str) DESC
SELECT @str

/* -- 結果(當賦值處理語句注釋掉ORDER BY 時)
我不是一個<u>好人</u>,也不是<u>垃圾</u>
-- */

/* -- 結果(當賦值處理語句加上ORDER BY 時)
我不是一個<u>好人</u>,也不是垃圾
-- */

  問題分析:
  兩個處理語句的結果不同,通過查看它們的執行計劃應該可以看出原因所在,為此,通過
SET SHOWPLAN_ALL ON
  輸出了兩種執行語句的執行計劃(僅StmtText部分,有興趣的讀者在自己的電腦上測試的時候,可以去了解其他部分的信息)

StmtText
Step
DECLARE @str nvarchar(4000) SET @str = N'我不是一個好人,也不是垃圾'
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丰镇市| 石景山区| 永济市| 福安市| 阿勒泰市| 南康市| 龙里县| 亳州市| 安多县| 邮箱| 灵石县| 宝山区| 行唐县| 河津市| 大英县| 西昌市| 光山县| 高台县| 息烽县| 南京市| 共和县| 富源县| 长葛市| 西华县| 永兴县| 赫章县| 电白县| 温宿县| 柏乡县| 汝阳县| 石棉县| 赤水市| 临沭县| 临湘市| 武冈市| 黎川县| 九寨沟县| 清水县| 湘西| 若羌县| 岢岚县|
  • <td id="looiy"><tr id="looiy"><div id="looiy"></div></tr></td>

    • <sub id="looiy"><tr id="looiy"><th id="looiy"></th></tr></sub>