filesoft.Discuss a project
← FileMaker guides

Quick answer · Data & calculations

Why do FileMaker IDs look the same but fail to match?

Find hidden differences in imported identifiers before changing the values that connect your records.

By Plato · Filesoft · Published 21 October 2026

Start with the value, then check the relationship

Two identifiers can look identical while containing different characters. An ordinary space, a nonbreaking space or a missing leading zero may be hard to see in a field. Inspect the stored text before changing the relationship or importing the file again.

Text differences are only one possible cause. Also check the table occurrences, field types, relationship predicates and record access. A diagnostic text comparison is not a substitute for testing FileMaker’s actual relationship or import-matching behavior in your file.

Work in a copy. Keep the source identifier in a text field named Incoming::RawID; do not replace it with a cleaned value. Create a separate candidate field if your source contract permits normalization.

Five values worth comparing

Use these expressions to create a small fictional test set. The quotation marks below are expression syntax, not part of the stored identifiers.

ExpressionLengthWhat to investigate
"00042"5The reference identifier
"00042" & Char ( 32 )6Trailing ordinary space
"00042" & Char ( 160 )6Trailing nonbreaking space
"42"2Leading zeros were removed
"00" & Char ( 8203 ) & "042"6Zero-width space inside the identifier

A number field is a poor staging choice when zeros are meaningful. Once an upstream spreadsheet has turned 00042 into 42, adding zeros back is only justified by a documented fixed-width rule.

Inspect one character at a time

Run this small diagnostic from a layout based on Incoming. It returns an inspection report without writing records. Recreate the steps in Script Workspace; this is readable script text, not an importable clipboard snippet.

FileMaker script · inspect a source ID

Set Variable [ $raw ; Value: Incoming::RawID ]
Set Variable [ $report ; Value: "Length: " & Length ( $raw ) ]
Set Variable [ $i ; Value: 1 ]
Loop
    Exit Loop If [ $i > Length ( $raw ) ]
    Set Variable [ $report ; Value: $report & "¶" &
        $i & ": " & Code ( Middle ( $raw ; $i ; 1 ) ) ]
    Set Variable [ $i ; Value: $i + 1 ]
End Loop
Exit Script [ Text Result: $report ]

For the ordinary-space sample, position 6 should report 32. For the nonbreaking-space sample it should report 160. Passing a single character to Code keeps the output readable; passing the whole identifier produces a combined number. See the Claris Code reference.

FileMaker calculation

Exact ( Incoming::RawID ; "00042" )

Exact is useful for detecting a difference from your reference text. It does not establish that every FileMaker matching operation uses the same comparison rules.

Define a rule before cleaning anything

Suppose your supplier explicitly says that surrounding ordinary spaces are accidental. You can propose a trimmed candidate while retaining the raw value. Do not assume Trim removes every Unicode separator, and do not remove internal characters or change case merely because the result looks cleaner.

Before accepting candidates, group them under the comparison rule you intend to use. If two distinct raw IDs produce one candidate, hold both for review. For example, 00042 and 00042 followed by a space would collide under that trimming rule.

Record the rule and its version with the import batch. If the source later confirms that two identifiers are different, the raw values let you investigate without reconstructing the original CSV.

Check the repair

Repeat the five-value test against the actual destination fields and relationship. Confirm which values should match, which should remain distinct, and which should be rejected. Include an existing record so that a correction cannot silently create a second parent.

If identical stored text still fails, return to relationship context, indexing, field type and privileges. Changing more characters is unlikely to repair a problem elsewhere in the model.

References

Primary references checked during preparation. Provider-specific contracts and native behavior still require review for your implementation.

Continue this topic