CREATE TABLE #mytable (f1 char(2) ) INSERT INTO #mytable VALUES ('A ') SELECT * FROM #mytable WHERE f1='A' && <-- return empty rowset DROP TABLE #mytableI supposed that in SELECT command, SQL Server type CHAR(nn) he was much similar one to VFP type C(nn), but is not true.
CREATE CURSOR myCur (f1 C(2)) INSERT INTO myCur VALUES ('A ') SELECT * FROM myCur WHERE f1=='A' COUNT FOR f1=='A' ? _TALLY ...Then, for VFP C(nn) fields, use RTRIM(fieldName) is useless on :
INSERT INTO #mytable VALUES ('A ')or
INSERT INTO #mytable VALUES ('A')is identical.
SET EXACT OFF ? LOOKUP(F1,'A'+SPACE(1000),F1) && <-- WITH EXACT OFF IT NOT FOUND * for set soft you get a hard comparison SET EXACT on ? LOOKUP(F1,'A'+SPACE(1000),F1) && <-- WITH EXACT ON IT FOUND * for set hard you get a soft comparison * but if you define a INDEX INDEX ON f1 tag TAG1 ? LOOKUP(F1,'A'+SPACE(1000),F1) && <-- USE INDEX AND IT NOT FOUNDand for this,REASON: is not valid.
DO WHILE !EOF() AND f1=='A' ... SKIP ENDDOand
SELECT * FROM myCur WHERE PADR(f1,2)=='A'But then VFP remove any string space on the SELECT, also for the string literal and variables.
SELECT * FROM myCur WHERE 'A '=='A' SELECT * FROM myCur WHERE 'A'+SPACE(RAND(0)*1000)=='A'+SPACE(RAND(0)*1000) v1='A ' v2='A' SELECT * FROM myCur WHERE m.v1==m.v2 AND m.v2==m.v1Yes, it is true, before any string comparison VFP RTRIM() any string.
SELECT * FROM myCur WHERE f1+CHR(0)=='A'+CHR(0)but then for Rushmore speed up you must define f1+CHR(0) on index expression,