Wow*_*Bow 13 sql oracle replace
我的数据库中有100个单元格,?而不是'.这可能发生在所有行和列中,并且每个单元格可能出现多个单词.这是一个单元格的例子.
Parents? CUI assumed equal to the sum of the father?s/stepfather?s and mother?s/ stepmother?s income .
Run Code Online (Sandbox Code Playgroud)
我想编写一个SQL语句,查找包含的?每个单元格(每个单元格可能多于一个)并替换它们'.我确信所有人?都必须毫无例外地被替换.
我知道有一个函数替换但我不知道如何从sql中的字符串中提取字符.
这是我得到的一个例子,但它无法帮助我.
UPDATE dbo.authors
SET city = replace(city, 'Salt', 'Olympic')
WHERE city LIKE 'Salt%';
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Jus*_*ave 16
您确定存储在数据库中的数据实际上是一个问号吗?我倾向于从样本数据中怀疑问题是字符集转换之一,?当字符无法在客户端字符集中表示时,它被用作替换字符.可能,数据库实际上存储的是Microsoft"智能引号"字符而不是简单的撇号.
什么是DUMP性能表现实际上是存储在数据库中?
SELECT column_name,
dump(column_name,1016)
FROM your_table
WHERE <<predicate that returns just the sample data you posted>>
Run Code Online (Sandbox Code Playgroud)
您使用什么应用程序来查看数据?客户的NLS_LANG设定是什么?
什么是数据库和国家字符集?数据是否存储在一VARCHAR2列中?还是NVARCHAR2?
SELECT parameter, value
FROM v$nls_parameters
WHERE parameter LIKE '%CHARACTERSET';
Run Code Online (Sandbox Code Playgroud)
如果所有问题字符都存储在数据库中为0x19(十进制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
Run Code Online (Sandbox Code Playgroud)
Jes*_*ing 15
UPDATE databaseName.tableName
SET columnName = replace(columnName, '?', '''')
WHERE columnName LIKE '%?%'
Run Code Online (Sandbox Code Playgroud)
这将替换所有?带':
UPDATE dbo.authors
SET city = replace(city, '?', '''')
WHERE city LIKE '%?%'
Run Code Online (Sandbox Code Playgroud)
如果需要更新多个列,可以在city每次执行时更改为不同的列名,也可以列出如下列:
UPDATE dbo.authors
SET city = replace(city, '?', '''')
,columnA = replace(columnA, '?', '''')
WHERE city LIKE '%?%'
OR columnA LIKE '%?%'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
163533 次 |
| 最近记录: |