如题
解决方案 »
- 字符怎么合并
- 在本地查询后直接插入远程SQL数据库,这样的存储过程如何写?
- 目前水晶报表有哪些中文版本比较好的呢?
- 关于日期函数的请教!!!!在线等!!!
- 100分请教:读取EXCEL中某列的值时,如果该列设置了自定义的格式,怎么处理?
- 如何查询每一组的前2名的数据
- 请教一个列约束的问题
- sql2008 读取access 数据信息出差
- 如何将SQL_2000 的数据库, 迁到ACCESS上去???
- 如何在sql中将数据根据自定义的要求写入xls?
- 程序越编越大,修改时只是面对一大堆vb代码翻来翻去很不方便,到底写软件走怎样的路子才对,修改才容易?是从需求分析-概要设计-详细设计-...这样走下去呢,还是随便一点好呢。哪有一个开发模式可供参考参考,从分析到设计再到实现、测试等。怎样才能理清开发思路,修
- 请问,下面的SQL查询语句写?
one , two ...?
Create table xxpp
(a varchar(20))
insert into xxpp select '1'
insert into xxpp select 'a'
insert into xxpp select '中国'
insert into xxpp select 'A'
insert into xxpp select '@'
SElect * from xxpp where ascii(a)>123
/*
中国
*/
SElect * from xxpp where ascii(a)>=65
/*
a
中国
A
*/
/*
用定义排序规则(Chinese_PRC_CS_AS_WS、Chinese_PRC_BIN)来区分,
介绍两种排序规则:
第一个Chinese_PRC所属区域(中文(香港特别行政区),中文(中华人民共和国),中文(新加坡))
CS(CaseSensitivity缩写):CS 指定区分大小写,CI 指定不区分大小写。
AS(AccentSensitivity缩写):AS 指定区分重音,AI 指定不区分重音。
WS(WidthSensitivity缩写):WS 指定区分大小写,Omitted 指定不区分大小写。(区分全角半角)
BIN:指定使用二进制排序次序。
KanatypeSensitive:KS 指定区分假名类型,Omitted 指定不区分大小写。 _BIN 二进制排序
_CI_AI 不区分大小写、不区分重音、不区分假名类型、不区分宽度
_CI_AI_WS 不区分大小写、不区分重音、不区分假名类型、区分宽度
_CI_AI_KS 不区分大小写、不区分重音、区分假名类型、不区分宽度
_CI_AI_KS_WS 不区分大小写、不区分重音、区分假名类型、区分宽度
_CI_AS 不区分大小写、区分重音、不区分假名类型、不区分宽度
_CI_AS_WS 不区分大小写、区分重音、 不区分假名类型、区分宽度
_CI_AS_KS 不区分大小写、区分重音、区分假名类型、不区分宽度
_CI_AS_KS_WS 不区分大小写、区分重音、区分假名类型、区分宽度
_CS_AI 区分大小写、不区分重音、 不区分假名类型、不区分宽度
_CS_AI_WS 区分大小写、不区分重音、不区分假名类型、区分宽度
_CS_AI_KS 区分大小写、不区分重音、区分假名类型、不区分宽度
_CS_AI_KS_WS 区分大小写、不区分重音、区分假名类型、区分宽度
_CS_AS 区分大小写、区分重音、不区分假名类型、不区分宽度
_CS_AS_WS 区分大小写、区分重音、不区分假名类型、区分宽度
_CS_AS_KS 区分大小写、区分重音、区分假名类型、不区分宽度
_CS_AS_KS_WS 区分大小写、区分重音、区分假名类型、区分宽度
*/
create table ta(id int ,name varchar(20))
insert ta
select 1, 'A' union all
select 2, 'A'union all
select 3, 'a,' union all
select 4, 'A,'
select * from ta where name like'A%'--所有记录都会在结果集
select * from ta where name collate Chinese_PRC_CS_AS_WS like '%,%'--只有第4条记录满足
select * from ta where name collate Chinese_PRC_CS_AS_WS like'a%'--第3条记录满足(加_ws与上一方法结果相同)
select * from ta where name collate Chinese_PRC_CS_AS_WS like'A%'--第2条记录满足
select * from ta where name collate Chinese_PRC_BIN like'A'--第1条记录满足(用二进制排序结果同上相同)结果如下:
id name
----------- --------------------
1 A
2 A
3 a,
4 A,(所影响的行数为 4 行)id name
----------- --------------------
4 A,(所影响的行数为 1 行)id name
----------- --------------------
3 a,(所影响的行数为 1 行)id name
----------- --------------------
2 A(所影响的行数为 1 行)id name
----------- --------------------
1 A(所影响的行数为 1 行)--drop table ta
--测试数据
DECLARE @t TABLE(col varchar(10))
INSERT @t SELECT 'aa'
UNION ALL SELECT 'Aa'
UNION ALL SELECT 'AA' --全角A
UNION ALL SELECT 'A,A' --全角A,半角逗号(,)
UNION ALL SELECT 'A,A' --全角A,全角逗号(,)--1.查大写字母
SELECT * FROM @t
WHERE col COLLATE Chinese_PRC_CS_AS_WS like '%A%'--2.查全角字母
SELECT * FROM @t
WHERE col COLLATE Chinese_PRC_CS_AS_WS like '%A%'--3.查半角逗号(,)
SELECT * FROM @t
WHERE col COLLATE Chinese_PRC_CS_AS_WS like '%,%'--3.查全角逗号(,)
SELECT * FROM @t
WHERE col COLLATE Chinese_PRC_CS_AS_WS like '%,%'
GO
/*=============================================*/
--2 实现全角与半角字符转换的处理函数
CREATE FUNCTION f_Convert(
@str NVARCHAR(4000), --要转换的字符串
@flag bit --转换标志,0转换成半角,1转换成全角
)RETURNS nvarchar(4000)
AS
BEGIN
DECLARE @pat nvarchar(8),@step int,@i int,@spc int
IF @flag=0
SELECT @pat=N'%[!-~]%',@step=-65248,
@str=REPLACE(@str,N' ',N' ')
ELSE
SELECT @pat=N'%[!-~]%',@step=65248,
@str=REPLACE(@str,N' ',N' ')
SET @i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
WHILE @i>0
SELECT @str=REPLACE(@str,
SUBSTRING(@str,@i,1),
NCHAR(UNICODE(SUBSTRING(@str,@i,1))+@step))
,@i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
RETURN(@str)
END
GO
比如3位like '%[0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z]%'
我有时也看不到回复
写个匹配统计的。
DECLARE @t TABLE(v VARCHAR(10))
INSERT @t SELECT 'aab,'
UNION ALL SELECT 1
UNION ALL SELECT 123
UNION ALL SELECT '1a'
UNION ALL SELECT ' 国人'
UNION ALL SELECT 'a*'
UNION ALL SELECT '中a国'
SELECT TOP 36 ID=IDENTITY(INT,0,1),x='*' INTO # FROM sysobjects
UPDATE # SET x=CASE WHEN id<=9 THEN RTRIM(id) ELSE CHAR(64+id-9) ENDSELECT v FROM @t a
INNER JOIN # b
ON CHARINDEX(x,v)>0
GROUP BY v
HAVING COUNT(v)=LEN(v)
GO
DROP TABLE #
GO
/*
v
1
123
1a
*/
基本上就是这样了我觉得很麻烦啊,有无必要做这个check,感觉很费时间
INSERT @t SELECT 'aab,'
UNION ALL SELECT 1
UNION ALL SELECT 123
UNION ALL SELECT '1a'
UNION ALL SELECT ' 国人'
UNION ALL SELECT 'a*'
UNION ALL SELECT '中a国'
SELECT TOP 100 ID=IDENTITY(INT) INTO # FROM sysobjectsSELECT * FROM @t
WHERE v NOT IN(
SELECT v FROM @t a
INNER JOIN # b
ON 1=1 AND SUBSTRING(v,id,1)!='' AND SUBSTRING(v,id,1) LIKE '[^a-z0-9]'
)GO
DROP TABLE #
GO
declare @t table(id int identity,n varchar(10))
insert @t select '233'
insert @t select 'abdd'
insert @t select 'dsa23'
insert @t select '23acf'
insert @t select 'dsd随机'
insert @t select '12随机'
insert @t select '随机12'
insert @t select '随机ab'select * from @t where PATINDEX ( '%[^0-9a-zA-Z]%' ,n)=0
/*
id n
----------- ----------
1 233
2 abdd
3 dsa23
4 23acf
*/
IT技术挺全的,不错,鼓励一下:http://www.ciitc.com