存儲值的類型使用SQL配置oracle數據庫列值我有一個要求,我必須配置文件/檢查一個oracle數據庫表中的特定列只包含字符或不包含數字像城市等欄目)。相似的,我必須檢查一列可以包含字母數字值而不是特殊字符。這怎麼能用oracle sql來完成。如何使用SQL存儲在列
回答
如果您使用的是版本10g +,則可以嘗試使用regexp_instr函數並搜索所需的posix字符類的出現次數。
實施例:
create table test1(onlyletters varchar2(100))
/
insert into test1
values('a')
/
insert into test1
values('b')
/
insert into test1
values('a1')
/
insert into test1
values('22')
/
select *
from test1
where REGEXP_INSTR(onlyletters, '[[:digit:]]') = 0
然後這應該僅返回其中列「onlyletters」具有沒有數字,在此情況下那些具有值「a」和「B」的行。
如果你想找到那些包含數字,搜索REGEXP_INSTR(...)> 0
我不知道你所說的特殊字符的意思,但你可以使用不同的POSIX字符類這樣,我用它來檢測控制字符與「REGEXP_INSTR(onlyletters,[[:cntrl:]]')」。
對這裏的字符類更多信息:http://www.regular-expressions.info/posixbrackets.html
下面是一個使用翻譯的例子。您可能需要調整一點與人物要允許,哪些是你不這樣做,但它會給你一個想法:使用正則表達式一個
SQL> create table cities
2 (name varchar2(30)
3 , constraint city_name_alphanumeric
4 check (translate(upper(name),'1ABCDEFGHIJKLMNOPQRSTUVWXYZ','1') is null)
5 )
6/
Table created.
SQL> insert into cities values ('Utrecht')
2/
1 row created.
SQL> insert into cities values ('Utr3cht')
2/
insert into cities values ('Utr3cht')
*
ERROR at line 1:
ORA-02290: check constraint (RWIJK.CITY_NAME_ALPHANUMERIC) violated
SQL> insert into cities values ('UtrΘcht')
2/
insert into cities values ('UtrΘcht')
*
ERROR at line 1:
ORA-02290: check constraint (RWIJK.CITY_NAME_ALPHANUMERIC) violated
SQL> insert into cities values ('|Utrecht')
2/
insert into cities values ('|Utrecht')
*
ERROR at line 1:
ORA-02290: check constraint (RWIJK.CITY_NAME_ALPHANUMERIC) violated
在這裏:
SQL> delete cities
2/
1 row deleted.
SQL> alter table cities
2 drop constraint city_name_alphanumeric
3/
Table altered.
SQL> alter table cities
2 add constraint city_name_alphanumeric
3 check (regexp_like(name,'^[[:alpha:]]+$'))
4/
Table altered.
SQL> insert into cities values ('Utrecht')
2/
1 row created.
SQL> insert into cities values ('Utr3cht')
2/
insert into cities values ('Utr3cht')
*
ERROR at line 1:
ORA-02290: check constraint (RWIJK.CITY_NAME_ALPHANUMERIC) violated
SQL> insert into cities values ('UtrΘcht')
2/
insert into cities values ('UtrΘcht')
*
ERROR at line 1:
ORA-02290: check constraint (RWIJK.CITY_NAME_ALPHANUMERIC) violated
SQL> insert into cities values ('|Utrecht')
2/
insert into cities values ('|Utrecht')
*
ERROR at line 1:
ORA-02290: check constraint (RWIJK.CITY_NAME_ALPHANUMERIC) violated
Regards,
Rob。
謝謝你的幫助,我的要求是配置文件/分析現有數據,我可以使用選擇讀取數據,我無法創建約束。 – Walker 2011-02-25 11:41:25
我的不好。儘管你可以在where子句的謂詞中使用檢查條件。 – 2011-02-25 11:44:20
- 1. 如何使用linq to sql在xml列中存儲xml文件?
- 2. 如何使用SQL-Server存儲過程?
- 3. SQL如何存儲列十進制值?
- 4. 如何SQL Server存儲在存儲過程中的SQL語句
- 5. 如何在調用sql存儲過程時獲取列名稱
- 6. 在列表sql c存儲列#
- 7. 如何僅在列存在時使用SQL列名稱?
- 8. 如何在SQL Server的圖像類型列中存儲字符串使用SqlParameter
- 9. 如何使用PHP在同一個SQL列中存儲多個記錄?
- 10. 如何將散列存儲在使用C#的SQL Server數據庫中?
- 11. 如何使用存儲過程動態地在SQL Server中插入列?
- 12. 如何使用SQL檢索存儲在ORACLE 11g的BLOB列中的文本?
- 13. 如何查找在PL SQL中使用列的所有存儲過程?
- 14. 存儲在SQL
- 15. 存儲在SQL
- 16. 數據類型使用存儲在SQL
- 17. 如何使用asp.net將數據存儲在sql數據庫中#
- 18. 如何在SQL查詢中使用存儲等號的變量
- 19. 如何使用功能在存儲過程中的SQL Server 2008
- 20. 如何在MySQL存儲過程中使用動態SQL
- 21. 如何使用存儲過程在SQL中插入多行?
- 22. 如何滴在SQL Server存儲過程中使用的@temp表
- 23. 如何在LINQ to SQL中使用系統存儲過程
- 24. 如何在存儲過程的動態SQL中使用LIKE?
- 25. 如何使用C#在SQL數據庫中存儲XML文件?
- 26. 如何在存儲過程中使用循環sql server 2005
- 27. 如何使用C#方法在SQL存儲過程
- 28. 如何在MVC實體框架中使用SQL存儲過程
- 29. 如何在SQL Server存儲過程中使用
- 30. 如何使用SSMS在sql server 2005中存儲多行文本?
通過特殊字符我的意思是我想檢查一些像人名字的列不包含像@,#,$,%,&,〜等字符 – Walker 2011-02-25 09:58:23