not icomparable?

Welcome Forums General PowerShell Q&A not icomparable?

This topic contains 0 replies, has 1 voice, and was last updated by  Forums Archives 7 years, 2 months ago.

  • Author
    Posts
  • #5340

    Member
    Points: 0
    Rank: Member

    by Lembasts at 2012-12-11 17:59:09

    Greetings,
    I have a script that pulls data from a SQL database.
    One of the properties is defined as an integer when I do a GM.
    I can use the -eq operator, but when I use -lt or -gt I get an error :

    Cannot compare "" because it is not IComparable.

    What on earth does this mean please?

    Ignore me......its because the field does not contain a number.
    Interesting though, when I display it, it looks blank but it does not equal "" and does not equal $null. The length of the field is 1. I wonder what is in this field? I notice this happens with all SQL fields that are supposedly null.

    by nohandle at 2012-12-12 02:05:25

    Cannot compare "" because it is not IComparable.

    I means it does not implement this interface I suppose:
    http://msdn.microsoft.com/en-us/library ... rable.aspx

    Ignore me......its because the field does not contain a number.

    What is the exact type of the value?
    ($variable.property).GetType().fullname
    or the gm way.

    by Lembasts at 2012-12-13 14:49:58

    The gm shows the variable is an integer.
    The exact type of the value is "System.DBNull".
    So how can I test for that type of null value in an if statement?

    by nohandle at 2012-12-13 15:06:16

    $variable -is [System.DBNull] I think.

    by Lembasts at 2012-12-13 16:18:48

    $variable -is [System.DBNull] I think.

    I got a false result when i ran the above.

    by nohandle at 2012-12-14 00:52:03

    to comply with the syntax of the GetType example the previous one should read:
    $variable.property -is [System.DBNull]
    Did you specified the property when you tried it? I should have described it more precisely the first time, sorry.

    by nohandle at 2012-12-14 01:16:26

    $dbNull= [System.DBNull]]unfortuntely unlike normal null dbNull results in True when casted to bool
    just like most of the others values does (0, $null and of course False does not)
    so you can't use it in condition directly to learn if the variable has value
    that is not dbNull.
    [bool]$null
    [bool]$dbNull
    False
    True
    to check if the value is dbNull you have to check if it is of the dbNull type$dbNull -is [System.DBNull]you can also use the type without the System because it is loaded by default$dbNull -is [DBNull]True
    True

    by Lembasts at 2012-12-17 13:11:30

    When i run this:
    $sqlqr[0].lastmessagestateid.gettype().fullname
    The answer is System.DBNull.
    When I then run this:
    $sqlqr[0].lastmessagestateid.gettype().fullname -is [DBNull]
    the answer is false.

    by nohandle at 2012-12-18 03:14:36

    $sqlqr[0].lastmessagestateid.gettype().fullname

    this tells you that the type of the original item is DBNull but it outputs the answer as (type) string so if you do

    $sqlqr[0].lastmessagestateid.gettype().fullname -is [DBNull]

    you ask if the answer returned is of type dbNull which obvously is not.
    You have to ask if the original item is of type dbNull: $sqlqr[0].lastmessagestateid -is [DBNull]

    by Lembasts at 2012-12-18 12:37:11

    Thats embarrasing 🙂
    Silly me...
    I finally got True with your last statement!

    by nohandle at 2012-12-18 12:56:31

    No it's not, that is learning 🙂

    Please mark the thread as solved (by the solved button) if your issue got solved.

The topic ‘not icomparable?’ is closed to new replies.

denizli escort samsun escort muğla escort ataşehir escort kuşadası escort