Using Salesforce SOQL I can get the Owner's Id using the following:
SELECT Case.OwnerId
FROM Case
WHERE Case.CaseNumber = '00001234'
I can then get the User details for the User who owns the case in this query:
SELECT User.Id, User.Name, User.Custom_Field__c
FROM User
WHERE User.Id = '001A0000001abc1DEF'
But I can't get it to work in a single statement, I think this is because Owner != User, even though the owner is in fact a user in this case. I have tried:
SELECT Owner.Custom_Field__c
FROM Case
WHERE Case.CaseNumber = '00001234'
But I get an error that the Custom_Field__c is not a valid field.
You can do this with a semi-join in SOQL. I tested it out, and it still works even though Owner is polymorphic:
SELECT Custom_Field__c
FROM User
WHERE Id IN (SELECT OwnerId
FROM Case
WHERE Case.CaseNumber = '00001234')