我在删除数据库响应中的空格时遇到了一些问题...
表中的数据是第二个 - ____________________1
下划线我的意思是空格......但是当我显示数据时我无法删除这些空格......我该怎么做?
我已经尝试了TRIM(), LTRIM(), ALLTRIM(), REPLACE(), STRREPLACE()
,但他们没有使用我的visual fox pro数据库......
任何人都可以帮我解决问题吗?
UPD:
现在我只用print_r()
命令显示......但这里有一些代码:
$result = odbc_exec($connect, "select
pacienti.pacientid,
pacienti.f_name,
pacienti.s_name,
napravlenie.rtgapparat,
napravlenie.doctor,
opisanie_rtg.opis,
apparatura.prefiks
from
pacienti left outer join napravlenie on pacienti.pacientid = napravlenie.pacientid
left outer join opisanie_rtg on pacienti.pacientid = opisanie_rtg.pacientid
left outer join apparatura on napravlenie.rtgapparat = STUFF(apparatura.gruppa, 0, ' ', '')
where
pacienti.pacientid = '".$pk_full."'") or die ("Error in Database: ".odbc_errormsg());
$all = array();
while($row = odbc_fetch_array($result))
{
$all[] = $row;
}
echo "<pre>";
print_r($all);
答案 0 :(得分:1)
.DBF(dBase / Foxpro表)字符字段用空格填充,因此我建议您使用select alltrim(pacienti.f_name) as f_name,...
删除前导和尾随空格。
答案 1 :(得分:0)
尝试STRTRAN(string_field,'','')
答案 2 :(得分:0)
现在,对于大多数数据库系统,您可以拥有可变宽度字段。问题是本机VFP行为是为表中的每列分配固定数量的空间。在VFP中执行SQL语句时,它会查看第一条记录以确定每个字段的类型和大小,并相应地创建结果游标/表结构。
例如,如果您有一个第一列定义为Char(50)的表,那么VFP将在该字段中分配50个空格(非空字符),以便您的字符串在每一行上的长度恰好为50个字符。
当您尝试使用Select Alltrim(field),... from table时,如果第一个记录的第一列找到字符串&#34;现在是时间&#34;那么第一列的宽度将是15个字符,所有后续行将被填充或修剪,但所有行将是15个字符。
您可以通过创建包含不同数量的文本/空白区域的少数行和单个列的表来进行此试验。然后尝试
SELECT alltrim(field1)FROM mytable ORDER BY len(alltrim(field1)) INTO CURSOR结果
结果将是所有行只会与源数据中的最短字符串一样宽。
这意味着您需要在运行查询后进行所有修剪,而不能将其作为查询的一部分来完成。
答案 3 :(得分:0)
我知道这是一个非常古老的问题,但我刚刚发现了一种方法
SELECT CAST(columnName as varchar(len(TRIM(columnName)))) FROM table
这不是编写查询的好方法,但它看起来确实可以正确裁剪。
如上所述,STRTRAN 替换列中的所有空格,因此如果您有
"John Smith "
变成
"JohnSmith"