当前位置:首页 » 编程语言 » sql排除非ascii字符
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql排除非ascii字符

发布时间: 2022-09-11 14:20:38

1. sql语句 查询 非数字字符

把数字全部转化成ascii码 然后来判断。下面是个例子。
这题给5分太少了点,呵呵。
DECLARE @position int, @string char(15),@t_num varchar(50)
DECLARE cursor_r cursor for select t_num from tab2
open cursor_r
fetch next from cursor_r into @string
begin
while @@fetch_status =0
begin
--print @string

SET @position = 1
WHILE @position <= len(@string)
BEGIN
set @t_num =ASCII(SUBSTRING(@string, @position, 1))

if @t_num<48 or @t_num>57
begin
insert into tab3 (t_num) values(@string)
break
end

SET @position = @position + 1
END

fetch next from cursor_r into @string
end
close cursor_r
deallocate cursor_r
end

这题给5分太少了点,呵呵。正好我以前写过,就无私奉上了。

2. SQL如何去除特殊字符

sql 除去特殊字符,采用replace函数,但是有些类似空格的还是无法删除,

那么由于这些是非空格,而是 "回车"、“tab”键,此时我们需要采用ascII码,作为键值来替换,

MSSQL中空格完美剔除方法分享

我们可以使用类似的方法,处理table中的其它字符。

请认真阅读,并参考。

3. SQL字段中的不可见的乱字符怎么清除

给你个过程参考下

--在SQL Server中去除表中不可见字符
--以下的实例为去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可见字符。 注释:此处只去掉前后的不可见字符,不包括中间的字符,而且没有区分中文。

--在使用前需要指定对应要修改的表名,并且需要在对应数据库下执行;
SET NOCOUNT ON
DECLARE @TblName VARCHAR(100)
DECLARE @UpdateString NVARCHAR(1000)
DECLARE @SelectString NVARCHAR(1000)
DECLARE @COlName VARCHAR(100)
DECLARE @COUNT INT
SET @TblName = 'YOURTABLENAME'--指定想要修改的表名
--定义游标取出指定表内的数据类型是VARCHAR,char,nVARCHAR的字段名称
DECLARE cur_ColName CURSOR
FOR
SELECT col.name
FROM syscolumns AS col
inner join sysobjects AS obj ON col.ID = obj.ID
INNER join systypes AS typ ON col.xtype = typ.xtype
WHERE obj.xtype ='U'
AND obj.name = @TblName
AND typ.name IN ('VARCHAR','CHAR','NVARCHAR','NCHAR')
FOR READ ONLY
--打开游标
OPEN cur_ColName
FETCH NEXT FROM cur_ColName INTO @ColName
IF @@FETCH_STATUS<>0
BEGIN
PRINT '没有对应表或字段,
'PRINT '请确认当前数据库内有' + @TblName + '表,
' PRINT '或该表内有VARCHAR、CHAR、NVARCHAR、NCHAR类型的字段!
' GOTO LABCLOSE
END--循环修改
WHILE @@FETCH_STATUS=0
BEGIN
--拼修改字符串
--去掉左边的不可见字符
SET @SelectString = 'SELECT @COU=COUNT(*)
FROM ' + @TblName +'
WHERE ASCII(LEFT(' + @ColName +',1))<32
AND '+ @ColName + ' IS NOT NULL'
EXEC sp_executesql @SelectString,N'@COU INT OUTPUT',
@COUNT OUTPUT WHILE @COUNT>0
BEGIN
SET @UpdateString =
' UPDATE ' + @TblName +
' SET ' + @ColName + '=RIGHT(' + @ColName + ',LEN(' + @ColName + ')-1)
WHERE ASCII(LEFT(' + @ColName + ',1))<32
AND ' + @ColName + ' IS NOT NULL'
EXEC sp_executesql @UpdateString
EXEC sp_executesql @SelectString,N'@COU INT OUTPUT',@COUNT OUTPUT
END
--去掉右边的不可见字符 SET @SelectString = 'SELECT @COU=COUNT(*)
FROM ' + @TblName +'
WHERE ASCII(RIGHT(' + @ColName +',1))<32
AND '+ @ColName + ' IS NOT NULL'
EXEC sp_executesql @SelectString,N'@COU INT OUTPUT',
@COUNT OUTPUT WHILE @COUNT>0
BEGIN
SET @UpdateString = ' UPDATE ' + @TblName + ' SET '
+ @ColName + '=LEFT(' + @ColName + ',LEN(' + @ColName + ')-1)
WHERE ASCII(RIGHT(' + @ColName + ',1))<32
AND ' + @ColName + ' IS NOT NULL'
EXEC SP_EXECUTESQL @UpdateString
EXEC sp_executesql @SelectString,N'@COU INT OUTPUT',
@COUNT OUTPUT
END
PRINT 'column: ' + @ColName + '---ok'
FETCH NEXT FROM cur_ColName INTO @ColName
END
--关闭、释放游标LABCLOSE: CLOSE cur_ColName
DEALLOCATE cur_ColName

4. SQL表中怎么去掉一个字段中的空字符

用REPLACE函数来替换。
SQL字段中的空字符有2种,空格符和tab制表符(即char(9))。
例:去除 表table 中 col 列的空字符
去除空格符:update table set col = REPLACE(col,' ','')
去除制表符:update table set col = REPLACE(col,CHAR(9),'')

5. sql运行问题

sql运行问题?
数据库运行过程中常见的故障有3类:事物故障、系统故障、介质故障。

恢复策略:
1、事物故障:
发生事务故障时,被迫中断的事务可能已对数据库进行丁修改,为了消除该事务对数据库的影响,要利用日志文件中所记载的信息,强行回滚该事务,将数据库恢复到修改前的初始状态。
为此,要检查日志文件中由这些事务所引起的发生变化的记录,取消这些没有完成的事务所做的一切改变,这类恢复操作称为事务撤销。
2、系统故障:
系统故障的恢复要完成两方面的工作,既要撤销所有末完成的事务,还要重做所有已提交的事务,这样才能将数据库真正恢复到一致的状态。

3、介质故障:
介质故障比事务故障和系统故障发生的可能性要小,但这是最严重的一种故障,破坏性很大,磁盘上的物理数据和日志文件可能被破坏,这需要装入发生介质故障前最新的后备数据库副本,然后利用日志文件重做该副本后所运行的所有事务。
“数据故障恢复”和“完整性约束”、“并发控制”一样,都是数据库数据保护机制中的一种完整性控制。所有的系统都免不了会发生故障,有可能是硬件失灵,有可能是软件系统崩溃,也有可能是其他外界的原因,比如断电等等。
数据库运行的突然中断会使数据库处在一个错误的状态,而且故障排除后没有办法让系统精确地从断点继续执行下去。这就要求DBMS要有一套故障后的数据恢复机构,保证数据库能够回复到一致的、正确地状态去。

6. 如何快速判定ASCII字符和非ASCII字符

def is_ascii(s):
return all(ord(c) < 128 for c in s)
或者使用:

s.decode('ascii')
然后,抓UnicodeDecodeError异常。

后者看上去要高效一些。

Update: 还有一种方法,使用curses模组:

from curses import ascii

def isascii(s):
return all(ascii.isascii(c) for c in s)

7. 这段SQL语句是什么意思,说是“去除字符串中非字母和数字字符”,但真看不懂。。。。。

ascii中数字是48-57 大写字母是65-90 小写字母是97-122
是先川建一个空的字符串,然后把字符串'as#df*4,56'的每一位都拿出来匹配他的ascii码值
在范围内的字符因为where ascii(b.c) between 48 and 122 这个条件满足会被选出来,
然后拼到空字符串上,如果不是则选出null值,也拼上去,最后打印

tb_num06这个肯定是一个1,2,3,4.。。这样的序列表,然后<=字符串长度就是10,就是10条记录
然后通过函数substring(a.n, iter.pos, 1)取出字符串的每一个字符

其实这个写的不好,无法去除逗号,冒号什么的
你可以查看下ASCII码表

8. 如何判断一个字符串中是否有非ASCII字符

一般定义 字符编码 0 到 0x7F 为 ASCII字符,超出 0x7F 的算 扩展ASCII字符。
假定字符串 存放在 char s[SIZE]; 中,字符串长度为 strlen(s); 下面方法可判断:
char s[SIZE];
int i,flag=0;
for (i=0;i<strlen(s);i++) if (s[i]>0x7F){flag=1; break;};
if (flag==1) 字符串中含有非ASCII字符; else 不含非ASCII字符;