小编Har*_*Har的帖子

使用PROC SQL查找SAS中给定字符串中最多一个字母的字符串

首先是一些背景.我在SAS中使用proc sql,需要获取数据集中的所有条目(包含几百万个条目),其变量"Name"等于(比方说)"Massachusetts".当然,由于数据曾经由人类手动输入,因此接近所有可能出现的拼写错误("Amssachusetts","Kassachusetts"等).

我发现很少有条目错误地超过两个字符,所以代码

Name like "__ssachusetts" OR Name like "_a_sachusetts" OR ... OR Name like "Massachuset__"
Run Code Online (Sandbox Code Playgroud)

会选择我要找的条目.但是,我希望必须有一种更方便的方式来编写

Name that differs by at most 2 characters from "Massachusetts";
Run Code Online (Sandbox Code Playgroud)

在那儿?或者是否有其他策略来获取这些条目?我尝试搜索stackoverflow和网络但是不成功.我也是SQL和SAS的初学者.

一些额外的信息:数据库不是英文(实际的字符串不是"马萨诸塞州")所以使用SOUNDEX并不是真的可行(如果有的话).

提前致谢.

(编辑:改进标题)

regex sql sas

13
推荐指数
1
解决办法
1354
查看次数

使用Matlab进行MEXing C时,size_t和mwSize之间的差异

我目前正在努力将一些C文件移植到64位Matlab,这些文件是用32位Matlab进行的.

在这样做时,我遇到了两种类型,一种来自Matlab人,一种来自C标准.

这是Matlab文档中关于mwSize的内容:

mwSize(C和Fortran)

输入大小值

描述

mwSize是一种表示大小值的类型,例如数组维度.使用此功能可实现跨平台灵活性.默认情况下,mwSize等效于C中的int.使用mex -largeArrayDims开关时,mwSize等效于C中的size_t.在Fortran中,mwSize类似于INTEGER*4或INTEGER*8,基于平台和编译标志.

这就是维基百科对size_t的评价:

size_t是由stddef.h中定义的几个C/C++标准(例如,C99 ISO/IEC 9899标准)定义的无符号数据类型.[1] 它可以通过包含stdlib.h进一步导入,因为这个文件内部子包含stddef.h [2].

此类型用于表示对象的大小.采用或返回大小的库函数期望它们属于此类型或返回类型为size_t.此外,最常用的基于编译器的运算符sizeof应该计算为与size_t兼容的值.

size_t的实际类型取决于平台; 一个常见的错误是假设size_t与unsigned int相同,这可能导致编程错误,[3] [4]例如从32位移植到64位架构时.

据我所知,这些类型实际上是相同的.我的问题是:1)是吗?2)如果是,哪一个被认为是更好的编程品味使用.理想情况下,我们希望我们的代码与未来的Matlab版本兼容.我猜测答案是mwSize,但我不确定.

编辑:我应该补充一点,Matlab人正在使用两者.例如,

size_t mxGetN(const mxArray *pm);
Run Code Online (Sandbox Code Playgroud)

是一个检索mxArray列数的函数.但是,当一个人创建矩阵时,人们会使用,

mxArray *mxCreateDoubleMatrix(mwSize m, mwSize n, mxComplexity ComplexFlag);
Run Code Online (Sandbox Code Playgroud)

输入显然应该是mwSize.

c matlab types mex 32bit-64bit

10
推荐指数
1
解决办法
3716
查看次数

标签 统计

32bit-64bit ×1

c ×1

matlab ×1

mex ×1

regex ×1

sas ×1

sql ×1

types ×1