データベースには、?
の代わりに'
を含む100個のセルがあります。これは、すべての行と列、およびセルごとに複数のWordで発生する可能性があります。これは、1つのセルの例です。
Parents? CUI assumed equal to the sum of the father?s/stepfather?s and mother?s/ stepmother?s income .
?
(セルごとに複数の場合があります)を含むすべてのセルを検索し、'
に置き換えるSQLステートメントを記述したいと思います。 ?
はすべて例外なく交換する必要があると確信しています。
関数の置換があることは知っていますが、SQLの文字列から文字を抽出する方法がわかりませんでした。
これは私が得た1つの例ですが、それは私を助けることができませんでした。
UPDATE dbo.authors
SET city = replace(city, 'Salt', 'Olympic')
WHERE city LIKE 'Salt%';
何か案は?
データベースに保存されているデータが実際に疑問符であると確信していますか?サンプルデータから、問題は?
は、クライアントの文字セットで文字を表現できない場合に置換文字として使用されています。おそらく、データベースには、単純なアポストロフィではなく、Microsoftの「スマートクォート」文字が実際に格納されています。
DUMP
関数が実際にデータベースに保存するものは何ですか?
SELECT column_name,
dump(column_name,1016)
FROM your_table
WHERE <<predicate that returns just the sample data you posted>>
データを表示するためにどのアプリケーションを使用していますか?クライアントのNLS_LANG
に設定?
データベースと国別文字セットとは何ですか?データはVARCHAR2
列?またはNVARCHAR2
?
SELECT parameter, value
FROM v$nls_parameters
WHERE parameter LIKE '%CHARACTERSET';
すべての問題の文字がデータベースに0x19(10進数の25)として保存されている場合、REPLACE
は次のようにする必要があります。
UPDATE table_name
SET column1 = REPLACE(column1, chr(25), q'[']'),
column2 = REPLACE(column2, chr(25), q'[']'),
...
columnN = REPLACE(columnN, chr(25), q'[']')
WHERE INSTR(column1,chr(25)) > 0
OR INSTR(column2,chr(25)) > 0
...
OR INSTR(columnN,chr(25)) > 0
UPDATE databaseName.tableName
SET columnName = replace(columnName, '?', '''')
WHERE columnName LIKE '%?%'
これにより、すべての?
with '
:
UPDATE dbo.authors
SET city = replace(city, '?', '''')
WHERE city LIKE '%?%'
複数の列を更新する必要がある場合は、異なる列名に実行するたびにcity
を変更するか、次のように列をリストできます。
UPDATE dbo.authors
SET city = replace(city, '?', '''')
,columnA = replace(columnA, '?', '''')
WHERE city LIKE '%?%'
OR columnA LIKE '%?%'