0

このクエリを単純化するのに問題があります。
12 を変数にする必要があるため、一度だけ設定する必要があり、%BrightSide08.

これを異なる名前と長さで繰り返す必要があるためです。

Declare @len int, @name varchar

SET @len = 12
SET @name = '%BrightSide08'

UPDATE CHAR_DATA0
SET CHAR_DATA = (SELECT CHAR_DATA FROM xtreme.dbo.CHAR_DATA0
                 WHERE CONVERT(VARCHAR(12), SUBSTRING(CHAR_DATA, 9, 16)) LIKE '%BrightSide08')
WHERE CHAR_KEY = (
                SELECT top (1) CHAR_KEY
                FROM CHAR_DATA0
                 WHERE USER_KEY = (SELECT USER_KEY FROM xtreme.dbo.CHAR_DATA0
                 WHERE CONVERT(VARCHAR(12), SUBSTRING(CHAR_DATA, 9, 16)) LIKE '%BrightSide08')
                 )

UPDATE CHAR_INFOR
SET CHARID0 = (SELECT CONVERT(VARCHAR(12), SUBSTRING(CHAR_DATA, 9, 16)) FROM xtreme.dbo.CHAR_DATA0 
               WHERE CONVERT(VARCHAR(12), SUBSTRING(CHAR_DATA, 9, 16)) LIKE '%BrightSide08')
WHERE USER_KEY = (
                SELECT top (1) USER_KEY
                FROM CHAR_DATA0
                 WHERE USER_KEY = (SELECT USER_KEY FROM xtreme.dbo.CHAR_DATA0
                 WHERE CONVERT(VARCHAR(12), SUBSTRING(CHAR_DATA, 9, 16)) LIKE '%BrightSide08')
                 )


SELECT *
FROM CHAR_DATA0
WHERE USER_KEY = (SELECT USER_KEY FROM xtreme.dbo.CHAR_DATA0
                 WHERE CONVERT(VARCHAR(12), SUBSTRING(CHAR_DATA, 9, 16)) LIKE '%BrightSide08')

SELECT *
  FROM [game].[dbo].[CHAR_INFOR]
  WHERE USER_KEY = (
                SELECT top (1) USER_KEY
                FROM game.dbo.CHAR_DATA0
                 WHERE USER_KEY = (SELECT USER_KEY FROM xtreme.dbo.CHAR_DATA0
                 WHERE CONVERT(VARCHAR(12), SUBSTRING(CHAR_DATA, 9, 16)) LIKE '%BrightSide08')
                 )

何か不足していますか?私を修正してください。ありがとうございました。

4

1 に答える 1