# Citisnoofle

• Dang...that reads like a @snoofle story. It would be just like him to be the guy to discover the problem and write the patch.

• Only \$7m?

• Yay for testing in prod?

• This post is deleted!

• @Tsaukpaetra said in Citisnoofle:

Yay for testing in prod?

Prod is just an advanced test environment.

Work is just an advanced hobby project.

Right?

• @kt_ said in Citisnoofle:

@Tsaukpaetra said in Citisnoofle:

Yay for testing in prod?

Prod is just an advanced test environment.

Work is just an advanced hobby project.

It's the WTDWTF way!

• @fbmac alt confirmed?

• @error said in Citisnoofle:

It's the WTDWTF way!

You just inspired me:
If you don't know how to do it, do it the WTDWTF way !

• @bb36e the \$7m was a fine they had to pay to the SEC, not 15 years worth of transactions the system had been mistakenly eating.

• I want to know what Wtfy way they found to sort 10B between 89 and 100

• @Weng It might not make sense mathematically, but if we're just using characters as symbols, then it would sort that way in any scheme where the value of the 'B' symbol was less that of '0' - I think this is the case in EBCDIC?

• This post is deleted!

• @Weng

The reporting logic treated letters, such as A, B, C, as being less than the number 0. Therefore, 10B was treated as being a three-digit number with a value less than 100.

Also... with respect to letters being "less than" numbers... I wonder...

`(code[0] - '0') * 100 + (code[1] - '0') * 10 + (code[2] - '0')` would do it, in an encoding where the charcodes of letters come before the charcodes for numbers.

• @Weng said in Citisnoofle:

I want to know what Wtfy way they found to sort 10B between 89 and 100

• Anyone who is a Citibank customer should have already realized their infrastructure is janky as hell.

For six months, any time I tried to log in from https://www.citi.com , it would redirect me to an error page before going to the login page. If I went to the login page directly, the same thing happened.

They also had a loophole I didn't realize until recently that generally after applying for the AA Platinum Select World credit card (which gave 50k bonus miles after \$3k of spend, you would, within a few months, be upgraded to the Platinum Select World Elite card and could reapply for the same Platinum Select World card with the 50k bonus miles offer. You could do this every single time it happened.

• @JazzyJosh ... just reproduced that Chase login. God dammit.

• @Weng You're welcome, friend (◕‿◕✿)

• @Weng said in Citisnoofle:

I want to know what Wtfy way they found to sort 10B between 89 and 100

I assumed
`if (branch > '088' && branch < '101')`

@Sels said in Citisnoofle:

[SQL]

You order by clause is ineffective there, it's only applying to the final query and the union isn't guaranteed to respect it in any case (i.e. it could reorder the results of the final query too, if there had been more than one). You need to do
`select num from (`union goes here `) order by num`.

• @Sels said in Citisnoofle:

[SQL]

You order by clause is ineffective there, it's only applying to the final query and the union isn't guaranteed to respect it in any case (i.e. it could reorder the results of the final query too, if there had been more than one). You need to do
`select num from (`union goes here `) order by num`.

same difference, I used to see the same error in our DBs all the time because we also use alphanumeric cost centers, but is easily solved by leading zeros

• @Sels said in Citisnoofle:

same difference

I think you'll find you're not sorting 90 before 89 any more, which your original did (because it wasn't actually sorting at all).

But yes, if you're going to put numbers in an string field but still want them to sort properly, you need leading zeroes. Or, as in a case that came up here recently, you also put the actual numbers in a numeric field and sort on that. (The primary field has to be a string field since it has legacy data of the format 'xxx-nnnn' where 'xxx' is a letter code for the old system, and nnnn is a number from the old system; this prevents collisions with the numbers from the new system.)

The case we actually needed was to get all records from the new system between two numbers, which as I pointed out would break any time we went from n to n+1 digits, as well as things like '9' being between '89' and '90'. But we had a spare numeric field, so duplicating the actual number into that for records from the new system and using it for the query worked well.

• @Scarlet_Manuka said in Citisnoofle:

You order by clause is ineffective there, it's only applying to the final query and the union isn't guaranteed to respect it in any case (i.e. it could reorder the results of the final query too, if there had been more than one). You need to do
select num from (union goes here ) order by num.

In what DB? You have that backwards for how Oracle works.

• @boomzilla No, I don't. I work with Oracle every day and I have learned this through experience.

• @Scarlet_Manuka Well, I've used exactly that a bunch of times and just went and tried it.

``````select '10b'  num, 'a' letter from dual
union
select '090' num, 'b' letter from dual
union
select '110' num, 'c' letter from dual
order by 1 desc
``````
``````NUM L
--- -
110 c
10b a
090 b
``````
``````select '10b'  num, 'a' letter from dual
union
select '090' num, 'b' letter from dual
union
select '110' num, 'c' letter from dual
order by 2 desc
``````
``````NUM L
--- -
110 c
090 b
10b a
``````

• @Sels The way I read it, the system treated all 3-digit codes as test data, and then wasn't updated when they got legit non-test 3-digit codes.

Since that seems to be the hot new emote around here.

• @JazzyJosh said in Citisnoofle:

I'm surprised that they aren't just running all their operations on a database that only supports capital letters and using some skanky code to recreate the lower case letters on output for these newfangled ASCII computers.

• @Scarlet_Manuka said in Citisnoofle:

I work with Oracle every day

TRWTF

• @Scarlet_Manuka said in Citisnoofle:

@Sels said in Citisnoofle:

same difference

I think you'll find you're not sorting 90 before 89 any more, which your original did (because it wasn't actually sorting at all).

I think you'll find there is no 89 selected there

And if there were:

@dkf said in Citisnoofle:

@JazzyJosh said in Citisnoofle:

I'm surprised that they aren't just running all their operations on a database that only supports capital letters and using some skanky code to recreate the lower case letters on output for these newfangled ASCII computers.

Every financial institution I've worked for has had a hard on for capital letters everywhere, I blame accountants.

• I keep reading this thread's title as "cis snoofle". What have you done to me?!

• @kt_ I read it as "CSI Snoofle".

I blame TV

• @Sels said in Citisnoofle:

I blame accountants.

I blame the wbankers.

• @kline Or possibly for some (possibly stupid) reason they were sorting downwards?

• @JazzyJosh said in Citisnoofle:

Anyone who is a Citibank customer should have already realized their infrastructure is janky as hell.

Shit, really? Because of Costco, I'm now a Citi customer... sigh.

• @JazzyJosh said in Citisnoofle:

Well fuck. I am a customer of them. Not by choice (and too lazy to change now) Because they bought Washington Mutual who bought HomeSavings and Loan.

• @dcon Come to wtfbank

• @Sels said in Citisnoofle:

same difference, I used to see the same error in our DBs all the time because we also use alphanumeric cost centers, but is easily solved by leading zeros

but 090 isn't a legal octal number

• @all_users said in Citisnoofle:

but 090 isn't a legal octal number

And `Z0A` is? No, this is a different collation entirely, a “guess what might be a good idea and do something else” operation…

• @dkf said in Citisnoofle:

collation

ah - like deciding whether cart should come before or after carthorse..

guess what might be a good idea and do something else

and ending up with alphabetical in my example then

• @all_users I've seen stranger collations, ones that users have actually liked…

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.