0
我想更新一個列(MS SQL表中),其中包含很長的字符串(文本數據類型)附加它與從我的應用程序使用JPQL字符串。但是,下面的查詢會失敗:如何在MSQL中連接兩個字符串與MS SQL
UPDATE entity e SET e.longText = CONCAT(e.longText, :textToAppend) WHERE e.id = :id
有消息
The data types text and nvarchar are incompatible in the add operator.
的問題是,我們還需要支持其他DBS比MS SQL數據庫和DBS特定查詢是沒問題的(至少在有另一種方式)。
有了這個查詢,我試圖繞過查詢整個長文本,並在應用中連接它並更新它,所以它不是很慢(查詢經常被調用)。
我可以以某種方式將字符串附加到非常長的文本列,而無需在應用程序中手動執行,因此它適用於MS SQL? (我知道在JPQL中沒有投射支持,很遺憾)
使用JPA和Hibernate。
你爲什麼使用'TEXT'?你知道這個數據類型在10年前就被棄用了嗎? –
@ aaron-bertrand我知道,但它是JPA映射到\ @Lob字符串屬性(並且它必須與其他DBMS兼容,因此我無法指定DBS特定的數據類型) – redhead
我不是說改變你的代碼中的任何東西,我說你從SQL Server獲取錯誤信息,因爲* it *知道它不能將你的字符串附加到TEXT列。但是,如果SQL Server的基礎數據類型是(N)VARCHAR(MAX),則操作應該成功,並且這不會改變任何有關如何在其他任何DBMS中處理此操作的任何內容。 –