我遇到以下问题:我想用其ID和名称创建一个表Client。我还想检查“名称”字段是否仅包含字母。这是我的查询:
<link rel="stylesheet" type="text/css" href="food.css">
<html>
<head>
<ul>
<li><a class="active" href="index.php">Home </a></li>
<li><a href="admin.html">Administration</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<title> Food Website </title>
<body>
<script src="searchFood.js" type="text/javascript"></script>
<div class="food-container">
<input type="text" id="foodName" name="foodName" placeholder="Enter food eg: Apple, Bread">
<input type="submit" onclick="searchFoodDic()">
<div id="searchedFood">
</div>
</div>
</body>
</html>
脚本工作正常,正在创建表。但是以下INSERT语句
CREATE TABLE CLIENT(
ID NUMBER PRIMARY KEY,
FIRST_NAME CHAR(10) CONSTRAINT NAME_CHECK CHECK(REGEXP_LIKE(FIRST_NAME, '^[A-Za-z]*$'))
);
不起作用。这是错误文本:
INSERT INTO CLIENT
VALUES(1, 'BOB');
我确定这个错误的原因很明显,但是我只是不明白。我以前从未遇到过正则表达式问题。
预先感谢
答案 0 :(得分:4)
我的猜测是问题在于空格。 CHAR()
数据类型会自动填充长度的空格。
由于这个原因,可变长度字符串比固定长度字符串使用得更多。在Oracle中,这将是VARCHAR2()
类型:
CREATE TABLE CLIENT (
ID NUMBER PRIMARY KEY,
FIRST_NAME VARCHAR2(10) CONSTRAINT NAME_CHECK CHECK (REGEXP_LIKE(FIRST_NAME, '^[A-Za-z]*$'))
);
我可以再添加一些笔记:
clientId
或client_id
,而不是通用的id
。这允许大多数外键引用使用完全相同的名称。