Query
使用最長的 varchar 欄位更新欄位
我需要更新表中的 varchar 欄位,但只有最長的 varchar 記錄(其中包含最多的數據。)。我可以通過以下查詢輕鬆找到它:
SELECT TOP(1) options FROM ForrasReportsRicsiTeszt ORDER BY LEN(options) DESC
現在我需要更新它,但我對 sql 非常陌生。這是一個 2005 毫秒的 sql 伺服器。
我的更新查詢:
UPDATE ForrasReportsRicsiTeszt SET options = REPLICATE(options, 4) WHERE TOP(1) ORDER BY LEN(options) DESC
這給了我一個 TOP(1) 的錯誤,這是意料之中的。我只是不知道編寫此查詢的正確方法,我怎麼能只更新最長的 varchar 欄位?我設法用我的選擇查詢得到的那個。可悲的是,沒有可以在 WHERE 中使用的主鍵。
任何幫助將非常感激!
使用MAX函式,您可以編寫以下內容來獲取具有最長 varchar 的條目
SELECT MAX(LEN(options)) FROM ForrasReportsRicsiTeszt;
然後可以將其與 UPDATE 語句結合起來給出
UPDATE ForrasReportsRicsiTeszt SET options = REPLICATE(options, 4) WHERE LEN(options) = ( SELECT MAX(LEN(options)) FROM ForrasReportsRicsiTeszt );
或者,您可以使用Common Table Expression (CTE)。
;WITH MyTestCTE ( LengthLogngestOption) AS ( SELECT MAX(LEN(options)) FROM ForrasReportsRicsiTeszt ) UPDATE FRRT SET FRRT.Options = REPLICATE(options,4) FROM ForrasReportsRicsiTeszt FRRT JOIN MyTestCTE MTCTE ON LEN(FRRT.OPTIONS) = MTCTE.LengthLogngestOption;