sql中字
1. 如何处理sql中的关键字(例如',%)
delete
from
表名
where
字段名
in
(select
字段名
from
表名
group
by
字段名
having
count(*)>1)
不过关键字不应该有重复的,你要删除的是字段重复数据吧
2. sql有哪些保留字
sql中的保留字
action add aggregate all
alter after and as
asc avg avg_row_length auto_increment
between bigint bit binary
blob bool both by
cascade case char character
change check checksum column
columns comment constraint create
cross current_date current_time current_timestamp
data database databases date
datetime day day_hour day_minute
day_second dayofmonth dayofweek dayofyear
dec decimal default delayed
delay_key_write delete desc describe
distinct distinctrow double drop
end else escape escaped
enclosed enum explain exists
fields file first float
float4 float8 flush foreign
from for full function
global grant grants group
having heap high_priority hour
hour_minute hour_second hosts identified
ignore in index infile
inner insert insert_id int
integer interval int1 int2
int3 int4 int8 into
if is isam join
key keys kill last_insert_id
leading left length like
lines limit load local
lock logs long longblob
longtext low_priority max max_rows
match mediumblob mediumtext mediumint
middleint min_rows minute minute_second
modify month monthname myisam
natural numeric no not
null on optimize option
optionally or order outer
outfile pack_keys partial password
precision primary procere process
processlist privileges read real
references reload regexp rename
replace restrict returns revoke
rlike row rows second
select set show shutdown
smallint soname sql_big_tables sql_big_selects
sql_low_priority_updates sql_log_off sql_log_update sql_select_limit
sql_small_result sql_big_result sql_warnings straight_join
starting status string table
tables temporary terminated text
then time timestamp tinyblob
tinytext tinyint trailing to
type use using unique
unlock unsigned update usage
values varchar variables varying
varbinary with write when
where year year_month zerofill
3. 如何解决SQL语句中含有中文字符无法查询
package oop.hu.ytu.;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import oop.hg.ytu.beans.LoginBean;
import oop.hg.ytu.utils.JdbcUtils;
/**
* 处理用户登录请求
* @author Administrator
*
*/
public class LoginDomain {
public LoginBean select(String tableName,String username){
Connection con = null;
PreparedStatement pt = null;
ResultSet rs = null;
LoginBean bean = new LoginBean();
try {
username = "\""+username+"\"";
con = JdbcUtils.getConnection();
String sql = "select name,password from "+tableName+" where name="+username+"";
pt = con.prepareStatement(sql);
// pt.setString(1, tableName);
// pt.setString(2, u);
rs = pt.executeQuery();
while(rs.next()){
bean.setUsername(rs.getString("name"));
bean.setPassword(rs.getString("password"));
}
} catch (Exception e) {
throw new RuntimeException(e);
}finally{
JdbcUtils.free(rs, pt, con);
}
return bean;
}
}
username = "\""+username+"\"";这句话是进行字符串处理,加上双引号。
<pre name="code" class="java" style="background-color: rgb(255, 255, 255); ">String sql = "select name,password from "+tableName+" where name="+username+"";
这句话是重点,一定不能使用PreparedStatement提供的字符串处理方法,一定要直接自己拼接出字符串来运行,这样对于中文的处
4. SQL中关于字串替换问题.
如果记录中全部以'AA'开头可以用
UPDATE 表名 SET 列名=REPLACE(列名,'AA','HH') WHERE 列名 like 'AA'
如果记录中除了在'AA'开头,还有'AA'在记录中如 'AA0AA1'就用
UPDATE 表名 SET 列名='HH'+RIGHT(列名,LEN(列名)-LEN('AA')) WHERE 列名 like 'AA'
5. sql中如何统计一字段中字符串的个数
declare @s varchar(100)
set @s='156434A27kAsdABCiosd-01&**('
--找出现的次数
select len(@s)-len(replace(@s,'A',''))
SQL中字符串截取函数(SUBSTRING)
1、left(name,4)截取左边的4个字符
列:
SELECT LEFT(201809,4) 年
结果:2018
2、right(name,2)截取右边的2个字符
SELECT RIGHT(201809,2) 月份
结果:09
(5)sql中字扩展阅读
sql中group by用法:
GROUP BY可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类似Excel里面的透视表。
GROUP BY必须得配合聚合函数来用,分组之后可以计数(COUNT),求和(SUM),求平均数(AVG)等。
常用聚合函数:count()计数、sum()求和、avg()平均数、max()最大值、min()最小值。
SELECT 语句指定了两列(Customer 和 SUM(OrderPrice))。"SUM(OrderPrice)" 返回一个单独的值("OrderPrice" 列的总计),而 "Customer" 返回 6 个值(每个值对应 "Orders" 表中的每一行)。因此,我们得不到正确的结果。不过,您已经看到了,GROUP BY 语句解决了这个问题。
6. sql中求字串问题
先加一列 b
alter table 表名 add b 类型
update 表名 set b =
case
when substring(a,1,3)='000' then 1
when substring(a,1,3)='002' then 2
when substring(a,1,3)='125' then 3
end
7. pl/sql中中文是几个字符
在计算机中一个字的占位是按字节计算的,一个字节占8位二进制。
通常分为单字节字,和双字节字。数字、字母、常用符号都属于单字节字,
汉子都属于双字节字。通常可以说一个汉子占两个字符位。
例如:在SQL函数SUBSTR中,按字计算,数字、字母、汉字都看做一个字,
但在SUNSTRB中,按字节计算,数字、字母是一个字节,汉字算2个字节。
8. SQL中字符串的连接
在MYSQL中字符串连接使用的是concat内置函数。可以写为:select
*
from
myDB
where
name
=concat('a','bc')
在SQL
Server中字符串连接用+号。可以写为:select
*
from
myDB
where
name
='a'+'bc'
在Oracle中字符串连接用的是||号。
9. SQL中字符串的操作
你的chinese_name没有在引号里面,所以报错了
update medicine set chinese_name='农'+‘chinese_name’ where medicine_id='00014';
10. 如何处理sql中的关键字(例如',%)
使用 ESCAPE 关键字定义转义符。在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。
给你举个例子好了
select name from a WHERE name LIKE '%/%ab' ESCAPE '/'
结果为:
name
----------
11%ab
12%ab