sql-server - varchar 类型的 SQL 列在读入 SAS 时创建 � 符号
问题描述
解决方案
在 ASCII 中,“U+FFFD � REPLACEMENT CHARACTER”用于替换未知、无法识别或无法表示的字符。如果这是唯一导致您出现问题的字符,您可以简单地将其转换为破折号。
例如,让我们用破折号替换 � 值:
data have;
length character $20.;
infile datalines dlm=',';
input character$;
datalines;
Sugar�free
Camera�ready
Custom�built
;
run;
data want;
set have;
character = tranwrd(character, '�', '-');
run;
如果这不起作用,这里有一个替代选项。
第 1 步:查找字符的单个示例并获取其 ASCII 十六进制代码
data hex_code;
set have(obs=1);
ascii_hex = put(substr(character, 6, 1), $hex.);
run;
在这种情况下,十六进制代码是1A
. 我们可以将其用作十六进制文字来替换有问题的字符。
第 2 步:tranwrd
与您找到的十六进制文字一起使用
SAS 会自动理解'1A'x
为十六进制值,并会在字符串中搜索它。如果找到,tranwrd
将用破折号替换所有实例。
data want;
set have;
character = tranwrd(character, '1A'x, '-');
run;
推荐阅读
- ruby-on-rails - Ruby on Rails 在服务器启动时不会注册 active_admin (http://localhost:3001/admin)
- javascript - 在 Javascript 中创建和访问对象数组
- javascript - 使用 Chrome 开发者工具获取 XXX-xsrfstatemanager.js 文件的发起者
- r - 如何根据多个条件语句创建多个新列?
- python - 如何解决 Python 的“Pyzbar”库上的导入错误?
- c# - wpf c#中的mdf数据库部署问题
- java - 如何从类中隐藏不支持的接口方法
- python - 尝试在 django 中执行表单时,int() 参数必须是字符串
- http - 如何让 mitmproxy 只看 URL 就认为两个请求是相等的?
- python - json.decoder.JSONDecodeError:期望值:第 1 行第 1 列(字符 0)(文件写入)