{"html_url": "https://github.com/simonw/sqlite-utils/issues/179#issuecomment-699524671", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/179", "id": 699524671, "node_id": "MDEyOklzc3VlQ29tbWVudDY5OTUyNDY3MQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-09-26T17:31:23Z", "updated_at": "2020-09-27T20:31:50Z", "author_association": "OWNER", "body": "SQL query for detecting integers:\r\n```sql\r\nselect\r\n 'contains_non_integer' as result\r\nfrom\r\n mytable\r\nwhere\r\n cast(cast(mycolumn AS INTEGER) AS TEXT) != mycolumn\r\nlimit\r\n 1\r\n```\r\nThis will return a single row with a 1 as soon as it comes across a column that contains a non-integer - so it short circuits quickly on TEXT columns with non-integers in them.\r\n\r\nIf everything in the column is an integer it will scan the whole thing before returning no rows.\r\n\r\nMore extensive demo:\r\n```sql\r\nselect\r\n value,\r\n cast(cast(value AS INTEGER) AS TEXT) = value as is_valid_int\r\nfrom\r\n (\r\n select\r\n '1' as value\r\n union\r\n select\r\n '1.1' as value\r\n union\r\n select\r\n 'dog' as value\r\n union\r\n select\r\n null as value\r\n )\r\n```\r\nhttps://latest.datasette.io/fixtures?sql=select%0D%0A++value%2C%0D%0A++cast%28cast%28value+AS+INTEGER%29+AS+TEXT%29+%3D+value+as+is_valid_int%0D%0Afrom%0D%0A++%28%0D%0A++++select%0D%0A++++++%271%27+as+value%0D%0A++++union%0D%0A++++select%0D%0A++++++%271.1%27+as+value%0D%0A++++union%0D%0A++++select%0D%0A++++++%27dog%27+as+value%0D%0A++++union%0D%0A++++select%0D%0A++++++null+as+value%0D%0A++%29\r\n\r\n\r\nvalue | is_valid_int\r\n-- | --\r\n\u00a0 | \u00a0\r\n1 | 1\r\n1.1 | 0\r\ndog | 0", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 709577625, "label": "sqlite-utils transform/insert --detect-types"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/179#issuecomment-699526149", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/179", "id": 699526149, "node_id": "MDEyOklzc3VlQ29tbWVudDY5OTUyNjE0OQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2020-09-26T17:43:28Z", "updated_at": "2020-09-26T17:43:28Z", "author_association": "OWNER", "body": "Posed a question about this on the SQLite forum here: https://sqlite.org/forum/forumpost/ab0dcd66ef", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 709577625, "label": "sqlite-utils transform/insert --detect-types"}, "performed_via_github_app": null}