从右

时间:2016-03-22 19:11:42

标签: sql firebird trim

我正在使用firebird数据库,我的问题是我的所有数据都存储在'右边的空格中。当我查询某些信息以便在另一个程序(AutoIt)中使用它时,我被这个空格所困。

UPDATE tableName SET columnName = TRIM( columnName )
UPDATE DETECTION SET DNAME =  right(TRIM  (DNAME));

我尝试过这样的事情,但遗憾的是它没用。

我正在尝试更新我的整个数据库,因为所有修剪权对我来说都没用!

---------------------------- UPDATE --------
我还有问题

它不起作用,也许我只是愚蠢地执行它

SELECT a.DNAME, a.DTYPE, a.WINNAME, a.AREA, a.COLOR, a.MOUSE
FROM DETECTION a -- this is my table

当我尝试时;

UPDATE DETECTION SET DNAME = trim( DNAME)
Executing...
Done.
287 fetches, 56 marks, 0 reads, 0 writes.
0 inserts, 28 updates, 0 deletes, 0 index, 28 seq.
Delta memory: 8648 bytes.
DETECTION: 28 updates. 
28 rows affected directly.
Total execution time: 0.021s
Script execution finished.
Commiting transaction...
Done.
Starting transaction...
Preparing query: UPDATE DETECTION SET DNAME = trim( DNAME)
Prepare time: 0.022s
PLAN (DETECTION NATURAL)

当我尝试

UPDATE DETECTION SET DNAME = trim(tailing from DNAME) 

我收到以下错误

Error: *** IBPP::SQLException ***
Context: Statement::Prepare( UPDATE DETECTION SET DNAME = trim(tailing from DNAME)  )
Message: isc_dsql_prepare failed

SQL Message : -206
Column does not belong to referenced table

Engine Code    : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -206
Column unknown
TAILING
At line 1, column 43

即使第一个执行正确它什么也没做,我的查询仍然是最后的白色空间跟踪。

3 个答案:

答案 0 :(得分:0)

你应该使用rtrim

UPDATE tableName SET columnName = rtrim( columnName )

答案 1 :(得分:0)

您可以使用尾随:

UPDATE tableName SET columnName = TRIM(trailing from  columnName )

默认为BOTH

Trim firebird documentation

答案 2 :(得分:0)

第一个数据类型应该是varchar。其次,你应该检查你是否还有尾随空格。通常修剪删除它确定。 选择您知道内容的字段。让我们说玛丽,身份证= 100。 执行以下操作:从表中选择char = lenght(yourfield),其中id = 100 比较:从你的表中选择char_lenght(trim(yourfield)),其中id = 100。 我相信你实际上没有白色空间。