![](/img/trans.png)
[英]Can only find table in Oracle SQL when surrounding the table name with double quotes. Why?
[英]Find a field with double quotes in a Oracle SQL table
我在表中有一个VARCHAR2(8)字段,当我在Oracle SQL Developer中查询它时,得到两个不同的结果。 例如,
SELECT BRAND_NAME FROM BRAND WHERE BRAND_NAME = 'TOYOTA';
返回1行:
|TOYOTA|
SELECT BRAND_NAME FROM BRAND WHERE BRAND_NAME LIKE '%TOYOTA%';
返回两行:
|TOYOTA|
|TOYOTA|
这些值在Oracle SQL Developer中看起来相似,但是当我将其复制并粘贴到记事本中时,得到的输出如下。
TOYOTA
"TOYOTA "
我需要删除带有引号的值的行,但由于表没有任何键字段,因此无法明确标识该行。 我尝试使用转义字符进行搜索,但未成功。
您可以使用以下命令找到字符串:
SELECT BRAND_NAME
FROM BRAND
WHERE BRAND_NAME = 'TOYOTA ';
(将"TOYOTA "
字符串的内容从记事本复制/粘贴到上面的查询中,而不是尝试重新输入并获取不正确的空格字符)
如果找不到正确的最终字符,请使用正则表达式匹配字符串后的空格字符:
SELECT BRAND_NAME
FROM BRAND
WHERE REGEXP_LIKE( BRAND_NAME, 'TOYOTA\s' );
或DUMP
字符串的内容以查找其他字符的字符代码:
SELECT BRAND_NAME, DUMP( BRAND_NAME )
FROM BRAND
WHERE BRAND_NAME LIKE '%TOYOTA%';
将输出:
\n BRAND_NAME | DUMP(BRAND_NAME) \n :------------- | :-------------------------------\n 丰田| Typ = 1 Len = 6:84,79,89,79,84,65 \n 丰田| Typ = 1 Len = 7:84,79,89,79,84,65,9\n
db <> 在这里拨弄
您会看到一个额外的字符,其字符代码为9(制表符)
要删除该行,可以使用:
DELETE FROM BRAND
WHERE BRAND_NAME = 'TOYOTA ' -- Copy/paste the value from notepad, don't retype it
要么
DELETE FROM BRAND
WHERE BRAND_NAME = 'TOYOTA' || CHR(9) -- Use exact character code
要么
DELETE FROM BRAND
WHERE REGEXP_LIKE( BRAND_NAME, 'TOYOTA\s' ) -- Match any extra white-space
(确保最后一个不匹配太多行)
db <> 在这里拨弄
密集等级将获得具有重复值和不同长度的记录的column_name和记录长度,可用于delete语句。 例如:
with BRAND as
( select 1 as ID, 'TOYOTA' as BRAND_NAME from dual
union select 1 as ID, 'TOYOTA ' as BRAND_NAME from dual
union select 2 as ID, 'HONDA' as BRAND_NAME from dual
union select 2 as ID, 'HONDA' as BRAND_NAME from dual
union select 3 as ID,'CORVETTE' as BRAND_NAME from dual
union select 3 as ID,'CORVETTE 'as BRAND_NAME from dual)
select lenth,BRAND_NAME from (
select Dense_Rank() over(partition by trim(j.BRAND_NAME)
order by length(j.BRAND_NAME) asc) as ct,
length(j.BRAND_NAME) as lenth, j.* from BRAND j)
where ct!=1;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.